2010-05-21 6 views
15

Supposons que je souhaite enregistrer les choix d'interrogation des utilisateurs tous les jours. Dans ce cas, j'ai une table nommée vote qui a les colonnes poll, choice et user-id. Alors, comment puis-je sortir la contrainte (peut-être dans les modèles django ou si possible) que poll et user-id ne devraient pas être les mêmes pour une entrée, mais comme le même utilisateur peut voter pour différents sondages une fois et évidemment, divers utilisateurs peuvent voter pour le même sondage. J'espère que je suis clair.Django - crée une contrainte de base de données unique pour 2 champs ou plus ensemble

+0

double possible de [Comment définir deux champs "unique" comme deux] (http://stackoverflow.com/questions/2201598/how-to-define-two -fields-unique-as-couple) – ecampver

Répondre

26

L'attribut unique_together de la classe Meta de votre modèle est ce que vous cherchez:

class Meta: 
    unique_together = ('poll', 'user_id') 

Vérifiez django docs pour plus d'informations.

+1

Vous aurez besoin d'une virgule entre les deux parenthèses fermantes je pense 'unique_together = (('poll', 'user_id'),)'. –

+0

Oh ouais ... merci – sebpiq

+0

En fait, ce n'est pas nécessaire: https://docs.djangoproject.com/fr/dev/ref/models/options/#unique-together – dialex

0
+0

Pour autant que je sache, vous pouvez suggérer une modification à cette réponse si elle ne vous plaît pas d'une manière ou d'une autre. Cela sera alors accepté, en supposant que votre modification suggérée n'est pas de la merde, et vous aurez contribué quelque chose de positif au monde. Downvoting une réponse qui est de 3 ans lorsque la [réponse acceptée] (http://stackoverflow.com/a/2881073/111777) est toujours correcte semble un peu inutile, mais je suppose que c'est votre prérogative. –

+0

Vous devez accepter cette réponse qui est juste une phrase avec lien et ce lien est cassé n'est pas une très bonne réponse, n'est-ce pas? :) Contrairement il y a upvoted celui qui est acceptect et le lien est correct. C'est pourquoi un que j'apprécie l'autre je ne fais pas. – Drachenfels

Questions connexes