假设我有一个模型:
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/