Django меняет набор запросов modelchoice - PullRequest
0 голосов
/ 10 мая 2018

Модель:

class Event(models.Model):
    organizer = models.ForeignKey( Person )
    event_date = models.DateField()

Я хочу создать форму для event_id = 1:

form_class = modelform_factory( Event, exclude = () )
instance = Event.objects.get( id = 1 )
event_form = form_class( instance = instance )

Теперь я хочу изменить поле выбора органайзера, чтобы оно показывало только существующего человека в качестве единственной опции. Итак:

event_form.fields[ 'organizer' ].queryset = Person.objects.filter( id = instance.organizer_id )

У меня такой вопрос: в процессе назначения нового набора запросов мне нужно выполнить новый запрос к базе данных. Я чувствую, что в этом нет необходимости, поскольку у меня уже есть определенный органайзер, которому я хочу назначить (instance.organizer). Есть ли способ преобразовать этот экземпляр органайзера в набор запросов, чтобы избежать необходимости делать новый запрос?

Это не имеет большого значения для одной формы, но я хочу сделать набор форм из формы модели, который будет означать n запросов для n форм. Спасибо.

1 Ответ

0 голосов
/ 10 мая 2018

Попробуйте этот код ниже

from django import forms

instance = Event.objects.select_related().get(id=1)
choices = [(instance.organizer.pk, str(instance.organizer))]
event_form.fields[ 'organizer' ] = forms.ChoiceField(choices=choices)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...