【问题标题】:A Select Widget with fields as checkboxes with multiple options possible一个 Select Widget,其字段为复选框,可能有多个选项
【发布时间】:2019-02-11 06:21:07
【问题描述】:

我有以下型号:

class Owner(models.Model)

country = models.CharField(max_length=255, choices=COUNTRIES, default=COUNTRIES_DEFAULT)

COUNTRIES is compose of tuples:

COUNTRIES = (
    ('afg', 'Afghanistan'),
    ('ala', 'Aland Islands'),
    ('alb', 'Albania'),
    ('dza', 'Algeria'),
    ('asm', 'American Samoa'),
    ....... ) 

对于前端,我需要显示一个小部件,并且每个国家/地区都有一个复选框。 个人/用户可以选择多个国家/地区。

我想我需要使用自定义小部件,但我不知道从哪里开始继承字段/小部件并在数据库中进行查询。

--- 为什么不是Django Multiple Field questio的副本n ----

我不需要新的 Model 字段,或者将其存储在数据库中并且不是多对多关系,因此像包 django-multiselectfield 这样的东西没有用。 p>

ModelField 只存储一个值,但在表单中会出现元组中的值。我添加只是为了查看对应关系。

相反,我只需要成为一个表单字段,即可获取值并查询数据库。就像让所有居住在美国和英国的业主一样。

另外看起来不像Select2,我需要尊重设计。就像图片中的功能一样:

【问题讨论】:

  • @malberts,我不需要同样的东西,我更新了问题更清楚
  • 所以您只是在寻找一个使用复选框有多个选择的表单域?
  • @malberts 是的,我可以在其中自定义小部件,然后检索所有值。获取国家/地区的名称,然后执行查询集以获取居住在其中一个国家/地区的所有所有者。我只是在 Model 中查询 Country 字段

标签: django django-models django-forms


【解决方案1】:

在您的表单中,您必须使用 CheckboxSelectMultiple 小部件定义 MultipleChoiceField

countries = forms.MultipleChoiceField(choices=COUNTRIES, widget=forms.CheckboxSelectMultiple)

这将为您提供一个多选复选框列表。如果您不想显示长列表,您可以自己设置样式以显示滚动条。

这是 Django 文档中的一个示例:https://docs.djangoproject.com/en/2.1/ref/forms/widgets/#setting-arguments-for-widgets

【讨论】:

    猜你喜欢
    • 2014-08-28
    • 2011-02-13
    • 2017-09-10
    • 1970-01-01
    • 2017-08-13
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多