2

在 Django 中,有没有办法在模型之间创建以下动态关系?

 class ClothingMale(models.Model):
     # male specific fields

 class ClothingFemale(models.Model):
     # female specific fields

 class Person(models.Model):
    gender = models.IntegerField(max_length=2, choices=GENDER_CHOICES, blank=True)
    clothes = models.ForeignKey(???)

我正在为 Person 使用 ModelForm。表单内的衣服字段应根据选择的性别动态变化。我知道 GenericForeignKeys 但我想知道是否有更好的方法来解决这个问题?

4

2 回答 2

2

恕我直言,这是数据库设计的问题;我会选择一个PersonClothing超类并用 and 子类化MalePersonClothingFemalePersonClothing。超PersonClothing类将是 Django抽象基类当您想将一些通用信息放入许多其他模型时,一个特定的类很有用。

为此,只需在模型的meta中指定以下选项:

class Meta:
    abstract = True
于 2012-10-01T12:49:16.193 回答
0

一种选择是使用GenericForeignKey. filter()这当然有 int 的缺点,例如你不能GenericForeignKey

另一种选择是使用模型继承,它也有很多陷阱。

于 2012-10-01T12:42:03.283 回答