Я пытаюсь найти лучший подход к тому, что я хочу. И я мог бы использовать некоторую помощь для этого.Django: Виджет поля формы для каждой формы в formet
У меня есть модель А и модель В. Модель B имеет
modela = forms.ForeignKey(Model a)
Я хочу, чтобы создать представление, где вы можете редактировать и одного Model A и несколько Model B на одной странице. У Django есть формы для этого, и они отлично работают.
У меня есть одна деталь, хотя, что мелочи мелочи немного. А именно - я хочу, чтобы поля виджетов или моделей B были разными, в зависимости от того, какой выбор они сделали в предыдущих полях одного и того же объекта. Потому что - в зависимости от типа виджет должен быть входом для ввода даты или простой текстовой вставки.
Модель B выглядит следующим образом:
class ModelB(models.Model):
m0odela = models.ForeignKey(ModelA)
target_value = models.CharField()
target_type = models.CharField(choices = (there are choices))
target_threshold = models.CharField()
Я знаю, что я могу представить свою собственную форму для formset и я мог бы сделать это назначение виджета в этой форме.
Но проблема в том, что, когда у formet нет экземпляров/набора запросов, я не могу проверить, был ли задан параметр target_type для экземпляра форм. Поэтому я должен был бы сделать это на основе self.data или self.initial в форме. Но self.initial также нет в form.__init__()
. То, с чем я могу работать, - это self.data - но это необработанные запросы.POST или request.GET data - который содержит все ключи, такие как mymodelb_set-0-target_type.
Так что я немного потерялся здесь. Должен ли я выполнять синтаксический анализ ключей и выяснить, какой -target_type принадлежит текущей форме и получить выбранное значение там и назначить виджеты на основе этого значения? Или мне нужно создать собственный подкласс BaseInlineFormSet и переопределить _construc_form там как-то? Таким образом, форма будет иметь начальный ключ со связанными данными в ** kwargs.
Раньше кто-то сталкивался с подобными проблемами?
Алан