【发布时间】:2013-09-24 05:08:33
【问题描述】:
我希望有人能指出最 Djangoic 的方式来表示以下与模型的一般关系,以便 Django 现有的逻辑自然地强制执行这种关系。
事物 A 和事物 B 都具有多种类型之一。事物 A 可以与许多、一个或没有事物 B 相关,反之亦然(以对称方式),但是当且仅当它们共享相同的类型时,事物 A 和事物 B 才能相关。
我目前的实现是有三个模型,A、B 和 Type,其中 As 和 Bs 有一个 Type 的外键,A 和 B 有一个 m2m。
class A(models.Model):
b = models.ForeignKey(B)
typ = models.ManyToManyField(Type)
class B(models.Model):
a = models.ForeignKey(A)
class Type(models.Model):
name = models.CharField()
这让我可以做我想做的事,但并没有强制 A 不能有另一个类型的 B 的事实。我可以在我控制的视图中使用过滤逻辑,但是在我控制较少的地方,比如在 Admin 中,Django 让我将 As 映射到不同类型的 B。 Django中是否有另一种方式来表示As、Bs和Types之间的关系?
【问题讨论】:
标签: django django-admin foreign-key-relationship m2m