如何在admin django中设置多选选项



我有一个模型

class Event(models.Model):
event_name = models.CharField(max_length=100, default="")
event_organizer = models.ForeignKey(Organizer, on_delete=models.CASCADE)
event_type = models.ForeignKey(Type, on_delete=models.CASCADE)
event_city = models.ForeignKey(Citie, on_delete=models.CASCADE)
event_tag = models.ForeignKey(Tag, on_delete=models.CASCADE)

我有一个现场活动标签。在管理面板中添加事件表单期间,我想选择多个标签。如何做到这一点以及如何保存

由于将event_tag定义为Tag模型的ForeignKey,因此不能为一个事件选择多个标记。

然而,如果你想这样做,你应该这样定义你的Event模型:

class Event(models.Model):
event_name = models.CharField(max_length=100, default="")
event_organizer = models.ForeignKey(Organizer, on_delete=models.CASCADE)
event_type = models.ForeignKey(Type, on_delete=models.CASCADE)
event_city = models.ForeignKey(Citie, on_delete=models.CASCADE)
event_tag = models.ManyToManyField('Tag')

现在,如果您在管理员中同时注册EventTag模型,您应该能够为一个事件选择多个标记。

编辑

正如您在评论中提到的,您的Tag模型有一个is_active字段,您希望将选择限制在活动的字段中。

这可以使用M2M文件中的limit_choices_to来完成:

class Event(models.Model):
#...
event_tag = models.ManyToManyField('Tag', limit_choices_to={'is_active': True})

最新更新