マイmodels.py:追加の引数やフォームインスタンスをdjango formsetに渡すことはできますか?
--company--、--time period--
- データ要素1:
class Company(models.Model): company_name = models.CharField(max_length=255) class TimePeriod(models.Model): period = models.CharField(max_length=4) class Unit(models.Model): unit_name = models.CharField(max_length=50) unit_type = models.CharField(max_length=50) class DataElement(models.Model): data_element_name = models.CharField(max_length=50) class Source(models.Model): source_name = models.CharField(max_length=50) class CompanyData(models.Model): company = models.ForeignKey(Company) time_period = models.ForeignKey(TimePeriod) data_element = models.ForeignKey(DataElement) unit = models.ForeignKey(Unit) source = models.ForeignKey(Source) value = models.DecimalField(max_digits=15, decimal_places=2)
私はと同様の形式を持っているしたいのですが - --unit--、-value--、--source--
- データ要素2:--value--、--unit--、--source--
- ...
- データelementN:今--value--、--unit--、--source--
マイforms.py:
class CompanyTimeForm(ModelForm):
class Meta:
model = CompanyData
fields = ('company', 'time_period')
class CompanyDataForm(ModelForm):
# data_element = forms.IntegerField(widget=forms.HiddenInput())
# def __init__(self, extra):
# ... init data_element ...
class Meta:
model = CompanyData
fields = ('value', 'unit', 'source')
と使用方法:
top_form = CompanyChainTimeForm(request.POST or None)
CompanyDataFormSet = formset_factory(CompanyDataForm, extra=X)
formset = CompanyDataFormSet()
空のフォームセットを初期化してから、DataElement.objects.all()を取得して のformset.add(CompanyDataForm(... DataElement.pk ...))と同様のものを作成できますか
または私の場合には何が最良の選択肢でしょうか?
問題はむしろCompamyData.data_element時間期間ではありません。私はすべての新しいレコード(CompanyTimeForm)と多くの(N = DataElementsレコードの数)同様のフォームに共通のフィールドを持ち、N CompanyDataレコードとして保存されます(それぞれはCompanyTimeFormから同じフィールドを持ちます)。しかし、このようなフォームのそれぞれは、CompanyDataForm(コメント付き文字列)に渡すことができる一意の非表示のdataelement.pkを持つ必要がありますが、実際には(少なくともどのようにわからないのですか)実際にはできません。 – Alexey