Je débute avec django, et j'ai vraiment du mal à ne pas gérer moi-même mes requêtes sql et le modèle de mes tables.
J'ai une simple table de relations entre une table articles et une table catégories.
class ArticlesCategories(models.Model):
cat_id = models.ForeignKey(Categories, on_delete=models.DO_NOTHING)
art_id = models.ForeignKey(Articles, on_delete=models.DO_NOTHING)
class Meta:
unique_together = ('cat_id', 'art_id')
De ce modèle, je m'attendais donc à pouvoir insérer dans cette table des entiers.
artcat = ArticlesCategories()
artcat.art_id = 10
artcat.cat_id = 2
Et à récupérer une erreur de contrainte d'unicité au cas où cette entrée existe déjà dans la table.
Sauf que django râle parce qu'il veut des objets.
Cannot assign "2": "ArticlesCategories.cat_id" must be a "Categories"
instance.
De plus si je visionne le schéma de la table générée, il n'y a aucun unique sur les 2 colonnes, wtf !
On va quand même se prendre la tête à construire des models uniquement pour faire de simples insertions parce qu'en fait le schéma des tables générées est tellement à chier qu'on se demande à quoi ça sert que django s'en mêle.
Y a-t-il une autre façon de faire en utilisant de simples entiers ?
Pourquoi django ne créé pas un unique dans la table sql plutôt que si j'ai bien compris de faire cette vérification en interne ?