首页 > 解决方案 > 编写 Django 自定义模型字段

问题描述

我想编写一个显示项目大小的自定义字段。比如:“小”、“中”、“大”、“特大”。它必须像 IntegerField 一样是可选的。 这就是我想要的。我不知道我应该在哪里和做什么。

标签: djangopython-3.x

解决方案


您不需要为此定义自定义 Django 模型字段。事实上 Django 已经可以处理了。您可以为此提供一个choices=…参数 [Django-doc]

class SomeModel(models.Model):
    SIZE_CHOICES = (
        (1, 'small'),
        (2, 'medium'),
        (3, 'large'),
        (4, 'extra large'),
    )
    size = models.IntegerField(choices=SIZE_CHOICES)

然后,ModelForm您可以使用RadioSelect小部件 [Django-doc]从选项中进行选择:

class SomeForm(forms.ModelForm):

    class Meta:
        model = SomeModel
        fields = ('size',)
        widgets = {
            'size': forms.RadioSelect
        }

推荐阅读