2010-05-21 3 views
15

Angenommen, ich möchte sagen, Umfrage-Entscheidungen von Benutzern jeden Tag. In diesem Fall habe ich eine Tabelle mit dem Namen vote mit den Spalten poll, choice und user-id. Also wie kann ich die Beschränkung (vielleicht in den Django-Modellen oder wo immer möglich), dass poll und user-id beide nicht für jeden Eintrag identisch sein sollte, aber wie derselbe Benutzer für verschiedene Umfragen einmal abstimmen kann und offensichtlich verschiedene Benutzer für die Abstimmung können Gleiche Umfrage. Ich hoffe ich bin klar.Django - Erstellen Sie eine Datenbankeinschränkung für 2 oder mehr Felder zusammen

+0

möglich Duplikat von [Wie zwei Felder „einzigartig“ als Paar definieren] (http://stackoverflow.com/questions/2201598/how-to-define-two -fields-unique-as-couple) – ecampver

Antwort

26

Das unique_together Attribut der Meta Klasse des Modells ist, was Sie suchen:

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

prüfen django docs für weitere Informationen.

+1

Du brauchst ein Komma zwischen den zwei nahen Klammern Ich denke 'unique_together = ((' poll ',' user_id '),) '. –

+0

Oh yeah ... danke – sebpiq

+0

Eigentlich ist es nicht erforderlich: https://docs.djangoproject.com/de/dev/ref/models/options/#unique-together – dialex

0
+0

Soweit ich weiß, können Sie eine Bearbeitung vorschlagen diese Antwort, wenn es dir irgendwie nicht gefällt. Das wird dann akzeptiert werden, vorausgesetzt, Ihre vorgeschlagene Bearbeitung ist kein Mist, und Sie werden etwas Positives für die Welt beigetragen haben. Eine Antwort, die 3 Jahre alt ist, wenn die [akzeptierte Antwort] (http://stackoverflow.com/a/2881073/111777) immer noch korrekt ist, scheint ein wenig unnötig zu sein, aber ich denke, es ist dein Vorrecht. –

+0

Sie müssen zustimmen, dass die Antwort, die nur einen Satz mit Link ist und dieser Link ist gebrochen ist keine wirklich gute Antwort, oder? :) Im Gegensatz gibt es upvoted eine, die acceptect und Link ist korrekt. Deshalb schätze ich andere nicht. – Drachenfels

Verwandte Themen