14

我在 Django(1.4) 模型中有一个多对多的关系。

class UserProfile(models.Model):
    foos = models.ManyToManyField(Foo)

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

我希望在模型和管理员级别执行此操作,但仅在管理员中执行就足够了。

如果我理解正确,Django 中的“许多”是零个或多个。

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

谢谢,

克里斯。

4

2 回答 2

11

您不能像@Greg 详细信息那样在模型级别强制执行此操作,但您可以通过简单地将字段设为必填来在表单上强制执行此操作。这不会阻止任何具有 shell 级别访问权限的人手动创建没有 foo 的 UserProfile,但它会强制任何人使用基于浏览器的表单创建方法。

于 2012-05-07T16:19:14.673 回答
8

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

于 2012-05-07T11:00:14.950 回答