我在Django(1.4)模型中有多对多的关系。
class UserProfile(models.Model):
foos = models.ManyToManyField(Foo)
我想强制每个用户(个人资料)至少有一个Foo。 Foos可以有零个或多个用户(配置文件)s。
我希望在模型和管理员级别强制执行此操作,但只需在管理员中强制执行即可。
如果我理解正确,Django-speak中的'many'是零或更多。
我想要一个ManyToOneOrMore关系。我怎么能这样做?
谢谢,
克里斯。
答案 0 :(得分:7)
不幸的是,我不认为这在模型级别是可行的,因为ManyToMany数据与其他模型字段分开保存。您应该能够通过指定自定义表单并在表单上编写clean()方法在管理员级别强制执行它。
答案 1 :(得分:5)
您不能在模型级别强制执行此操作作为@Greg详细信息,但您可以通过简单地创建所需的字段来在表单上强制执行此操作。这不会阻止任何具有shell级别访问权限的人在没有foo的情况下手动创建UserProfile,但它会强制任何人使用基于浏览器的表单创建方法。