在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(???)
我正在使用ModelForm for Person。表单内的衣服字段应根据选择的性别动态变化。我知道GenericForeignKeys,但我想知道是否有更好的方法来解决这个问题?
答案 0 :(得分:2)
恕我直言,这是数据库设计的问题;我会选择PersonClothing
超类,并使用MalePersonClothing
和FemalePersonClothing
对其进行子类化。 PersonClothing
超类将是Django abstract base class;当您想要将一些常见信息放入其他一些模型时,特定的类非常有用。
要做到这一点,只需在模型meta中指定以下选项:
class Meta:
abstract = True
答案 1 :(得分:0)
一种选择是使用GenericForeignKey
。这当然有int的缺点,例如filter()
<{1}}
另一个选择是使用model inheritance,它也有很多陷阱。