在Django中,以多对多关系强制实施至少一个值?

fad*_*bee 12 django orm

我在Django(1.4)模型中有多对多的关系.

class UserProfile(models.Model):
    foos = models.ManyToManyField(Foo)
Run Code Online (Sandbox Code Playgroud)

我想强制每个用户(配置文件)至少有一个Foo.Foos可以具有零个或多个用户(配置文件).

我希望在模型和管理员级别强制执行此操作,但只需在管理员中强制执行即可.

如果我理解正确,Django发言中的'很多'是零或更多.

我想要一个ManyToOneOrMore关系.我怎样才能做到这一点?

谢谢,

克里斯.

Gre*_*reg 8

不幸的是,我不认为这在模型级别是可行的,因为ManyToMany数据与其他模型字段分开保存.您应该能够通过指定自定义表单并在表单上编写clean()方法在管理员级别强制执行它.


Chr*_*att 8

您不能在模型级别将此强制实施为@Greg详细信息,但您可以通过简单地创建所需的字段强制执行此操作.这不会阻止任何具有shell级别访问权限的人在没有foo的情况下手动创建UserProfile,但它会强制任何人使用基于浏览器的表单创建方法.