Подтвердить что ты не робот

Экземпляр Django ModelForm с пользовательским запросом для определенного поля

У меня есть модель, не похожая на следующее:

class Bike(models.Model):
    made_at = models.ForeignKey(Factory)
    added_on = models.DateField(auto_add_now=True)

Все пользователи могут работать на нескольких фабриках, поэтому их профили пользователей имеют ManyToManyField - Factory.

Теперь я хочу построить ModelForm для Bike, но я хочу, чтобы список made_at состоял только из фабрик, на которых работает текущий пользователь. Идея заключается в том, что пользователи должны иметь возможность добавлять велосипеды, которые они собрали, и ввести, на какой из заводов был сделан велосипед.

Как это сделать?

4b9b3361

Ответ 1

Вы можете задать вопрос этого вопроса.

S. Lott answer есть билет, чтобы решить вашу проблему. Он ответил:

ForeignKey представлен django.forms.ModelChoiceField, который является ChoiceField, выбор которого является модель QuerySet. См. Ссылку для ModelChoiceField.

Итак, предоставим QuerySet атрибуту query query. Зависит от того, как ваша форма построена. Если вы создадите явную форму, у вас будут имена с именами напрямую.

form.rate.queryset = Rate.objects.filter(company_id=the_company.id)Если вы берете объект ModelForm по умолчанию, form.fields["rate"].queryset = ...

Это делается явно в представлении. Нет взлома.

Ответ 2

попробуйте что-то подобное в представлении

form  = BikeForm()
form.fields["made_at"].queryset = Factory.objects.filter(user__factory)

измените запрос Factory так, чтобы он идентифицировал Factory, с которым работает пользователь.