Alv*_*oAV 50 python django django-models
我知道有没有MultipleChoiceField一个模式,你只能用它的形式.
今天,在分析与多项选择相关的新项目时,我遇到了一个问题.
我想有一个像场CharField与choices多样选择的选项.
我通过CharField在表单中创建并管理多个选项forms.MultipleChoiceField并使用逗号分隔选项来解决此问题.
在这个项目中,由于配置,我不能这样做,因为我上面提到的,我需要做的是在型号,我宁愿不要编辑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)
...
Run Code Online (Sandbox Code Playgroud)
但具有保存多个选择的能力不仅仅是一个选择.
spo*_*key 57
您需要考虑如何在数据库级别存储数据.这将决定您的解决方案.
据推测,您希望表中存储多个值的单个列.这也会强迫您考虑如何序列化 - 例如,如果您需要存储可能包含逗号的字符串,则不能简单地用逗号分隔.
但是,您最好使用类似下列之一的解决方案:
lec*_*hup 49
如果您正在使用Postgres,请考虑使用ArrayField.
from django.db import models
from django.contrib.postgres.fields import ArrayField
class WhateverModel(models.Model):
WHATEVER_CHOICE = u'1'
SAMPLE_CHOICES = (
(WHATEVER_CHOICE, u'one'),
)
choices = ArrayField(
models.CharField(choices=SAMPLE_CHOICES, max_length=2, blank=True, default=WHATEVER_CHOICE),
)
Run Code Online (Sandbox Code Playgroud)
Mat*_*anz 11
从这两者来看,https://pypi.python.org/pypi/django-select-multiple-field/看起来更圆润,更完整.它甚至有一套很好的单元测试.
我发现的问题是它在实现模型字段的类中抛出了Django 1.10弃用警告.
我修好了这个并发了PR.最新的代码,直到他们合并我的PR(如果他们决定嘿嘿)在我的回购分支中,在这里:https://github.com/matiasherranz/django-select-multiple-field
干杯!
M.-
| 归档时间: |
|
| 查看次数: |
59997 次 |
| 最近记录: |