Экземпляр 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
список должен состоять только из фабрик, на которых работает текущий пользователь. Идея состоит в том, что пользователи должны иметь возможность добавлять собранные велосипеды и указывать, на каком заводе был изготовлен велосипед.
Как я могу это сделать?
3 ответа
Ваш вопрос может быть обманом этого.
Ответ S.Lott: есть билет, чтобы решить вашу проблему. Он ответил:
ForeignKey представлен django.forms.ModelChoiceField, который является ChoiceField, чьи выборы являются моделью QuerySet. Смотрите ссылку для ModelChoiceField.
Итак, предоставьте QuerySet для атрибута queryset поля. Зависит от того, как строится ваша форма. Если вы создадите явную форму, у вас будут поля с именами напрямую.
form.rate.queryset = Rate.objects.filter(company_id=the_company.id)
Если вы берете объект ModelForm по умолчанию,form.fields["rate"].queryset = ...
Это сделано явно в представлении. Нет взлома вокруг.
Попробуйте что-то вроде этого в представлении
form = BikeForm()
form.fields["made_at"].queryset = Factory.objects.filter(user__factory)
измените фабричный набор запросов так, чтобы он идентифицировал фабрику, на которой работает пользователь.
В настоящее время вы должны использовать:
form.base_fields['alumno_item'].queryset = AlumnoItem.objects.prefetch_related(
'alumno',
'alumno__estudiante',
'alumno__estudiante__profile',
'item'
)