2017-05-18 1 views
0

Ich habe ein Modell, das Websites verfolgt und möchte, dass es für diesen Benutzer eindeutig ist. Wenn es sich bei der Website beispielsweise um google.com handelt, kann der Nutzer sie nur einmal eingeben, es können jedoch weiterhin mehrere Nutzer google.com eingeben. Um Ihnen eine bessere Idee hier ist mein models.py:Eintrag für Benutzer

class Site(models.Model): 
    url = models.CharField(max_length=500) 
    tag = models.ForeignKey(Tag) 
    user = models.ForeignKey('customauth.UserProfile') 

Gibt es trotzdem das URL-Feld eindeutig Benutzer zu machen?

Antwort

2

Sie unique_together constraint, verwenden könnte

class Site(models.Model): 
    url = models.CharField(max_length=500) 
    tag = models.ForeignKey(Tag) 
    user = models.ForeignKey('customauth.UserProfile') 

    class Meta: 
     unique_together = ('url', 'user') 

Diese Option ein Benutzer eine eindeutige URL, sonst django löst einen Fehler zu erstellen. Ein einzelner Benutzer kann nicht zwei Objekte mit derselben URL erstellen.

Der ValidationError, der während der Modellvalidierung ausgelöst wird, wenn die Einschränkung verletzt wird, hat den Fehlercode unique_together.

+0

Wenn ich eine zweite Website mit der gleichen URL in admin speichern, erstellt es immer noch einen neuen Eintrag, außer dass der Name (der auf 'return self.url' gesetzt wurde) als leer angezeigt wird. Kann es sein, weil eines der Felder ein Fremdschlüssel ist? – ng150716

+0

Ich habe versucht, das gleiche in meiner Maschine. Site mit einer URL erstellt, dann mit demselben Benutzer und einem anderen Tag, aber die gleiche URL versucht. aber Admin, löst Fehler für mich – zaidfazil

Verwandte Themen