Экземпляр 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
состоял только из фабрик, на которых работает текущий пользователь. Идея заключается в том, что пользователи должны иметь возможность добавлять велосипеды, которые они собрали, и ввести, на какой из заводов был сделан велосипед.
Как это сделать?
Ответы
Ответ 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, с которым работает пользователь.