Django 模型字段单选按钮
Posted
技术标签:
【中文标题】Django 模型字段单选按钮【英文标题】:Django Model Fields Radio Button 【发布时间】:2017-01-26 18:08:18 【问题描述】:如何使用 Django 模型字段创建单选按钮
#models.py
GENDER_CHOICES = (
('M', Male),
('F', 'Female')
)
class Profile(models.Model):
gender = models.CharField(choices=GENDER_CHOICES, max_length=128)
上述字段呈现为选择字段,但我想将其设为 一个单选按钮。
如果问题不正确,请有人更正问题
【问题讨论】:
【参考方案1】:我想你的意思是enumeration types
from django.utils.translation import gettext_lazy as _
class Student(models.Model):
class YearInSchool(models.TextChoices):
FRESHMAN = 'FR', _('Freshman')
SOPHOMORE = 'SO', _('Sophomore')
JUNIOR = 'JR', _('Junior')
SENIOR = 'SR', _('Senior')
GRADUATE = 'GR', _('Graduate')
year_in_school = models.CharField(
max_length=2,
choices=YearInSchool.choices,
default=YearInSchool.FRESHMAN,
)
def is_upperclass(self):
return self.year_in_school in
self.YearInSchool.JUNIOR,
self.YearInSchool.SENIOR,
【讨论】:
【参考方案2】:这适用于 Django 2.1 及更高版本
models.py 保持不变
在 admin.py 中
from django.contrib import admin
class ProfileAdmin(admin.ModelAdmin):
fields = (......, 'gender',...)
radio_fields = 'gender': admin.VERTICAL
【讨论】:
【参考方案3】:选择字段的默认小部件是选择/选择列表。 您可以在表单中更改小部件
gender = forms.ChoiceField(choices=GENDER_CHOICES, widget=forms.Radioselect())
【讨论】:
我怎样才能在模型字段而不是表单中做到这一点 你可以做到,你必须覆盖默认模型实现,请点击链接docs.djangoproject.com/en/dev/howto/custom-model-fields/… @thameem 如果你觉得我的回答没问题,把它标记为正确,这会增加我的分数。 'django.db.models' 没有属性 'ChoiceField' 你能解释一下吗? 不适用于 django 模型以上是关于Django 模型字段单选按钮的主要内容,如果未能解决你的问题,请参考以下文章
如何根据在模型级别定义的枚举字段在 Django Modelform 中呈现单选按钮选择?