django - 如何在 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。在管理面板中添加事件表单期间,我想选择多个标签。如何做到这一点以及如何保存它们
解决方案
由于您定义event_tag
为 ForeignKey 进行Tag
建模,因此您不能为一个 Event 选择多个标签。
但是,如果你想这样做,你应该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
字段,您希望将选择限制为那些处于活动状态的选项。
这可以limit_choices_to
在 M2M 文件中使用:
class Event(models.Model):
#...
event_tag = models.ManyToManyField('Tag', limit_choices_to={'is_active': True})
推荐阅读
- javascript - 如何使用 JavaScript 填充文本字段?
- performance - 如何避免多次检查标志同表Tsql
- cmake - 双环境构建的 CMake 设置
- c# - IRedisDatabase ListAddToLeft 无法序列化对象
- html - Sas :查看器结果与输出相同
- bash - Bash:将包含逗号的数字打印到 csv 文件
- amazon-web-services - 使用 AWS CodeDeploy 转移流量时来自同一用户的后续请求转到不同 AWS lambda 版本的问题
- flutter - 错误:输入“列表”
' 不是类型 'List 的子类型 ' - amazon-web-services - Elasticache Redis 中启用集群模式的复制逻辑是什么?
- python - 值的 PANDAS 数据帧上的 NPV 计算