python - Django ModelChoiceField 查询集的自定义顺序

标签 python django forms

假设我有一个模型:

class Option(models.Model):
    name = models.CharField(max_length=60)

我想使用它的值作为选择集来填充 ModelChoiceField:

my_model_form_field = forms.ModelChoiceField(queryset = Option.objects.all(), widget = forms.Select())

如果这样做,我将获得一个带有以下选项的选择小部件:

- Yes
- No
- I don't know
- I don't want to answer

问题是我希望“我不知道”成为选择中的第一个选项(因为它是被选中最多的选项)。

是否可以使用此自定义顺序(我的意思是,只是将其中一个选项放在首位?)获得带有选择集的选择小部件(或获得查询集)?

我可以选择使用 Javascript 解决它,但最好使用 Django 解决它。

最佳答案

您可以向您的模型添加一个排序字段,然后通过该字段对查询集进行排序。

class Option(models.Model):
    name = models.CharField(max_length=60)
    ordering = models.IntegerField()

my_model_form_field = forms.ModelChoiceField(
    queryset=Option.objects.all().order_by('ordering'),
    widget=forms.Select())

如果您设置 ordering选项,您甚至不需要 order_by()

class Option(models.Model):
    name = models.CharField(max_length=60)
    ordering = models.IntegerField()
    class Meta:
        ordering = ['ordering']

关于python - Django ModelChoiceField 查询集的自定义顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37007933/

相关文章:

python - 提取括号内字符串的内容

python - 查找错误 : unknown encoding: cp0

django - 管理员登录表单 django

django - 使用 sqlite 进行 django 单元测试时出现这种副作用的原因是什么?

java - 您将如何轻松验证 JSP 选项选择列表?

php - 构建一个表单,其中单选选项来自存储的数据库值

php - Symfony2 Forms - 如何使用动态选择选项

python - 在不同的分类器中获得相同的准确率 - sklearn

python - 内存映射文件如何处理大于内存的文件?

python - django PermissionRequiredMixin permission_required 不工作