如何在Django中为form.ChoiceField定义模型?

sup*_*rio 0 django django-models

我做了一个包含如下字段的表单:

sex = forms.ChoiceField(choices= SEX)
Run Code Online (Sandbox Code Playgroud)

哪里:

SEX = (
    ('F','Female'),
    ('M','Male'),
    ('U','Unsure'),
    )
Run Code Online (Sandbox Code Playgroud)

现在我想知道如何最好地定义性别模型?我知道可以这样做:

class UserProfile(models.Model):
    user = models.ForeignKey('User')
    sex = models.CharField(max_length=10)
Run Code Online (Sandbox Code Playgroud)

但是,没有比CharField更好的选择了吗?

Gar*_*rns 5

您已经将选择设置为字符串,因此它应该CharField(max_length=1, choices=SEX)在模型中。然后,您可以使用ModelForm而不是以单独的形式重复所有逻辑。例如:

# models.py
class MyModel(models.Model):
    SEX_CHOICES = (
        ('F', 'Female',),
        ('M', 'Male',),
        ('U', 'Unsure',),
    )
    sex = models.CharField(
        max_length=1,
        choices=SEX_CHOICES,
    )

# forms.py
class MyForm(forms.MyForm):
    class Meta:
        model = MyModel
        fields = ['sex',]
Run Code Online (Sandbox Code Playgroud)