python - Django 模型多项选择

标签 python django django-models

我知道 Model 没有 MultipleChoiceField,您只能在 Forms 上使用它。

今天我在分析一个与多项选择相关的新项目时遇到了一个问题。

我想有一个像 CharField 这样的字段,带有 choices 和多选选项。

我在其他时候通过创建 CharField 解决了这个问题,并使用 forms.MultipleChoiceField 管理表单中的多个选择,并存储用逗号分隔的选择。

在这个项目中,由于配置的原因,我不能像上面提到的那样做,我需要在模型中做,我更喜欢 NOT 来编辑 Django 管理表单 都不使用表格。 我需要一个具有多项选择的模型字段

  • 有人通过模型解决过类似的问题吗?

可能会覆盖某些模型函数或使用自定义小部件...我不知道,我有点迷路了。


编辑

我知道简单选择,我想有类似的东西:

class MODEL(models.Model):
    MY_CHOICES = (
        ('a', 'Hola'),
        ('b', 'Hello'),
        ('c', 'Bonjour'),
        ('d', 'Boas'),
    )
    ...
    ...
    my_field = models.CharField(max_length=1, choices=MY_CHOICES)
    ...

但可以保存多项选择,而不仅仅是一项选择。

最佳答案

您需要考虑如何在数据库级别存储数据。这将决定您的解决方案。

大概,您希望表中的单个列存储多个值。这也将迫使您考虑如何进行序列化 - 例如,如果您需要存储可能包含逗号的字符串,则不能简单地使用逗号分隔。

但是,您最好使用 django-multiselectfield 之类的解决方案。

关于python - Django 模型多项选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27440861/

相关文章:

将 Urllib2 与 virtualenv 一起使用的 Python Anywhere 问题

python - django 扩展 test_error_logging

python - Django compilemessages 不创建 .mo 文件

django - Django 会在表单错误时重新填充文件字段吗?

python - Django:icontains 大小写对 unicode 敏感

django - 查找同一模型的两个实例之间哪些字段不同

python - 具有 Crispy-forms VariableDoesNotExist 的 Django

python - 在 dask.read_sql_table 中添加 application_name 作为参数时出错

python - Seaborn pairplot 仅针对特定列具有对数刻度

Raspberry Pi 上的 Python 延迟