当您有一个多对多关系(related_name,而不是through),并且您试图使用管理界面时,您需要输入其中一个关系,尽管创建第一个条目时它不一定存在。

我正在创建一个应用程序,是一个活动组织者。假设我们有Event和Group模型,它们绑定在多对多关系中。

Django related_name用另外两个表的索引创建另一个表。 但我看不出为什么这张额外的表必须被填满。

如果我通过phpMyAdmin使用数据库,我可以在不注册事件的情况下创建一个组,因为两者之间的连接仅通过一个单独的表,并且在给定级别上没有数据库值强制。

我如何使管理界面这实现呢? 我如何使多对多字段可选在Django?


当前回答

如果你想指定多对多关系,而不是必须的,只需使用blank=True:

class Group(models.Model):
    ...
    events = models.ManyToManyField(Event, blank=True)

其他回答

如果Ludwik的答案不能解决问题,在序列化器中将required设置为false:

class RecipeDetailSerializer(RecipeSerializer):
    """Recipe detail serializer"""
    tags = TagSerializer(many=True, required=False)

如果你想指定多对多关系,而不是必须的,只需使用blank=True:

class Group(models.Model):
    ...
    events = models.ManyToManyField(Event, blank=True)