2010-05-21 10 views
15

Załóżmy, że chcę rejestrować wybrane opcje sondowania przez użytkowników każdego dnia. W tym przypadku mam tabelę o nazwie vote, która ma kolumny poll, choice i user-id. Więc jak mogę wykluczyć ograniczenia (być może w modelach django lub w miarę możliwości), że oba nie powinny być takie same dla każdego wpisu, ale jak ten sam użytkownik może raz głosować na różne ankiety i oczywiście różni użytkownicy mogą głosować na ta sama ankieta. Mam nadzieję, że jestem jasny.Django - utwórz unikalne ograniczenie dla bazy danych dla 2 lub więcej pól razem

+0

możliwe duplikat [Jak zdefiniować dwa pola „unikalne” jako para] (http://stackoverflow.com/questions/2201598/how-to-define-two -fields-unique-as-couple) – ecampver

Odpowiedz

26

atrybut klasy Meta swojego modelu unique_together jest to, czego szukasz:

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

Odjazd django docs uzyskać więcej informacji.

+1

Będziesz potrzebował przecinka między tymi dwoma nawiasami zamkniętymi. Myślę, że 'unique_together = (('poll', 'user_id'),)'. –

+0

Oh yeah ... thanks – sebpiq

+0

Właściwie to nie jest potrzebne: https://docs.djangoproject.com/en/dev/ref/models/options/#unique-together – dialex

0
+0

Z tego co wiem, możesz zasugerować edycję tę odpowiedź, jeśli w jakiś sposób ci się nie podoba. Zostanie to zaakceptowane, zakładając, że twoja sugerowana edycja nie jest bzdurą, a ty przyczynisz się do czegoś pozytywnego dla świata. Zignorowanie odpowiedzi, która ma 3 lata, kiedy [zaakceptowana odpowiedź] (http://stackoverflow.com/a/2881073/111777) jest nadal poprawna, wydaje się nieco niepotrzebne, ale myślę, że to jest twoja prerogatywa. –

+0

Musisz zgodzić się, że odpowiedź, która jest tylko jednym zdaniem z linkiem i ten link jest zepsuty, nie jest naprawdę dobrą odpowiedzią, prawda? :) W przeciwieństwie do tego jest przegłosowany taki, który jest akceptowany, a link jest poprawny. Dlatego cenię innych, których nie cenię. – Drachenfels

Powiązane problemy