У меня проблема с тем, что мне нужно отобразить много форм для подробных данных для иерархического набора данных. Я хочу отобразить некоторые реляционные поля в качестве меток для форм, и я пытаюсь найти способ сделать это более надежным способом. Вот код ...
class Category(models.Model):
name = models.CharField(max_length=160)
class Item(models.Model):
category = models.ForeignKey('Category')
name = models.CharField(max_length=160)
weight = models.IntegerField(default=0)
class Meta:
ordering = ('category','weight','name')
class BudgetValue(models.Model):
value = models.IntegerField()
plan = models.ForeignKey('Plan')
item = models.ForeignKey('Item')
Я использую modelformset_factory для создания набора форм бюджетных значений для конкретного плана. То, что я хотел бы, это имя элемента и название категории для каждого BudgetValue. Когда я перебираю формы, каждая из них будет помечена правильно.
class BudgetValueForm(forms.ModelForm):
item = forms.ModelChoiceField(queryset=Item.objects.all(),widget=forms.HiddenInput())
plan = forms.ModelChoiceField(queryset=Plan.objects.all(),widget=forms.HiddenInput())
category = "" < assign dynamically on form creation >
item = "" < assign dynamically on form creation >
class Meta:
model = BudgetValue
fields = ('item','plan','value')
Я начал с создания словаря budgetvalue.item.category.name, budgetvalue.item.name и формы для каждого значения бюджета. Это передается в шаблон, и я отрисовываю его, как я и предполагал. Я предполагаю, что упорядочение форм в наборе форм и наборы запросов, используемые для генерации набора форм, сохраняют значения бюджета в том же порядке, и словарь создается правильно. То есть budgetvalue.item.name связано с правильной формой. Это пугает меня, и я думаю, что должен быть лучший путь. Любая помощь будет принята с благодарностью.