2016-05-03 6 views
4

Say У меня есть модель:Индивидуальный заказ для QuerySet для Django ModelChoiceField

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.

ответ

1

Добавить другое поле в вашу модель модели, целое поле. И в вашем запросе. Закажите свой запрос в этом новом поле. Чем вы сможете изменить порядок этих параметров, используя панель администратора.

2

Вы можете добавить поле заказа в свою модель, а затем заказать запрос.

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'] 
Смежные вопросы