Ich sah einige ppl hatte dieses Problem vor mir, aber auf älteren Versionen von Django, und ich bin auf 1.2.1 ausgeführt.Django unique_together funktioniert nicht mit ForeignKey = Keine
ich ein Modell, das wie folgt aussieht:
class Category(models.Model):
objects = CategoryManager()
name = models.CharField(max_length=30, blank=False, null=False)
parent = models.ForeignKey('self', null=True, blank=True, help_text=_('The direct parent category.'))
class Meta:
unique_together = ('name', 'parent')
Jedes Mal, wenn ich versuche, mit einem Elternteil eine Kategorie in der Admin speichern auf Kein setzen, es funktioniert immer noch, wenn es eine andere Kategorie mit dem gleichen Namen und Elternsatz Zu keiner.
Ideen, wie man das elegant löst?
Der allgemeine Ansatz sieht hier gut, aber ich folge nicht der Logik von 'if selb.parent und Category.objects.filter (name = self.name) .exists():' Das sieht für mich so aus, als ob es prüft, ob der Elternteil existiert und eine andere Kategorie mit dem gleichen Namen existiert. Wie wollen wir das? Sollte dies nicht etwas wie (ungetestet) sein? If self.parent == None und FolderUpload.objects.filter (name = self.name, parent = None) .exists(): '? –
Ich denke, du hast Recht. Ich würde parent_id__is null = True anstelle von parent = None verwenden. Es benötigt wahrscheinlich eine exclude(), um das aktuelle Objekt ebenfalls zu ignorieren. – Alasdair
Ich werde für eine Woche weg sein, also wird nicht in der Lage sein, die Antwort zu korrigieren. Fühlen Sie sich frei, es zu bearbeiten, wenn Sie wollen/können. – Alasdair