【问题标题】:Django Model Fields Radio ButtonDjango 模型字段单选按钮
【发布时间】: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)

上述字段呈现为选择字段,但我想将其设为 一个单选按钮。

如果问题不正确,请有人更正问题

【问题讨论】:

    标签: django django-models django-templates


    【解决方案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 模型
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-10-10
        • 1970-01-01
        • 2015-12-25
        • 2018-01-31
        • 1970-01-01
        • 2020-11-30
        • 2012-07-12
        相关资源
        最近更新 更多