假设我在DB中有两个带有相应表格的模型。
一个模特是男人,另一个模特是女人。让我们说我不想塑造男女之间的婚姻关系。比方说,一个男人可以娶一个女人,反之亦然。 因此,我们在模型之间建立了一对一的关系。
我知道怎么做,我不知道如何根据django管理表格字段过滤被占用的男女。
答案 0 :(得分:1)
在您的表单中,您可以修改/过滤传递给选择男/女的ModelChoiceField的查询集,并执行queryset = Woman.objects.filter(man=None)
或其他任何操作以获取当前未婚男性。
顺便说一句,除非你专门为教会或某些国家工作,否则你可能想修改你的方法,因为你现在不能解释同性恋婚姻(或阿米什人就此而言)。此外,让Man
和Woman
模型具有不必要的非规范化,除非您将其分成两个模型的具体原因,否则只需拥有Person
模型就可以获得更好的服务具有gender
属性。
编辑:要扩展您的评论,如果我们按照您的建议设置模型 -
class Woman(models.Model):
age = models.IntegerField()
...
class Man(models.Model):
age = models.IntegerField()
woman = models.OneToOneField(Woman)
...
然后您可以访问man.woman或woman.man并且查询集可以以任何方式工作。当您使用OneToOneField
时,Django会为您处理这些内容