首页 > 解决方案 > Django 表单 - 具有数字范围的 ChoiceField

问题描述

class House(models.Model):
    floors = IntegerField()  # 10 floors for example

class Flat(models.Model):
    floor = IntegerField(null=True, validators=[MinValueValidator(1)])  # then here should be from 1 to 10 or None
    house = ForeignKey(House)

class FlatForm(models.ModelForm):
    class Meta:
        model = Flat
        fields = ['floor']
        widgets = {'floor': .....}  # I don't know what to do here. Select widget?

你好。有什么技巧可以实现我可以在房子的楼层数内为公寓选择楼层的表格吗?


我通过 Select2 和 API 进行了动态选择上传。

标签: pythondjangodjango-modelsdjango-forms

解决方案


根据Django docs,应该做以下事情:

class House(models.Model):
    Floor = models.IntegerChoices('Floor', range(1,11))
    floors = IntegerField(choices=Floor.choices)

(我现在无法测试 - 也许你需要list(range(1,11))。)

我认为您不需要更改表单中的小部件的任何内容,除非您对默认小部件不满意。


推荐阅读