我有一个模特
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字段。在管理面板中添加事件表单期间,我想选择多个标签。该怎么做以及如何保存它们
答案 0 :(得分:1)
由于您将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})