我有一个模型
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')
现在,如果您在管理员中同时注册Event
和Tag
模型,您应该能够为一个事件选择多个标记。
编辑
正如您在评论中提到的,您的Tag
模型有一个is_active
字段,您希望将选择限制在活动的字段中。
这可以使用M2M文件中的limit_choices_to
来完成:
class Event(models.Model):
#...
event_tag = models.ManyToManyField('Tag', limit_choices_to={'is_active': True})