J'ai vu que certains ppl avaient ce problème avant moi, mais sur les anciennes versions de Django, et je cours sur 1.2.1.Django unique_together ne fonctionne pas avec ForeignKey = Aucun
J'ai un modèle qui ressemble à:
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')
Chaque fois que je tente de sauver dans l'admin une catégorie avec un parent à None, il fonctionne encore quand il y a une autre catégorie avec le même nom et ensemble parent à Aucun.
Comment résoudre ce problème avec élégance?
L'approche générale semble bon, mais je ne suis pas la logique de 'si self.parent et Category.objects.filter (name = self.name) .exists():' Cela me semble comme il vérifie que le parent existe et une autre catégorie avec le même nom existe. Comment est-ce ce que nous voulons? Cela ne devrait-il pas plutôt être quelque chose comme (non testé) 'if self.parent == None et FolderUpload.objects.filter (nom = self.name, parent = None) .exists():'? –
Je pense que vous avez raison. J'utiliserais parent_id__is null = True au lieu de parent = None. Il a probablement besoin d'un exclude() pour ignorer l'objet courant. – Alasdair
Je serai absent pendant une semaine, donc je ne serai pas en mesure de corriger la réponse. N'hésitez pas à l'éditer si vous le souhaitez/pouvez. – Alasdair