我的models.py:是否可以將其他參數或表單實例傳遞給django formset?
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)
我想有類似的形式:
--company--,--time period--
- 數據元素1: - -value--,--unit--,--source--
- 數據在element2:--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()
是否有可能初始化空的formset,然後獲取DataElement.objects.all()並做出類似於10或者對我的情況最好的選擇是什麼?
問題不TIMEPERIOD而CompamyData.data_element。對於每個新記錄(CompanyTimeForm)和許多(N = DataElements記錄數)類似的表單,我都有一個共同字段,它們將作爲N個CompanyData記錄(每個記錄都具有與CompanyTimeForm相同的字段)保存。但是每個來自這個類似的表單都應該有獨特的隱藏dataelement.pk,我可以傳遞給CompanyDataForm(註釋的字符串),但實際上我不能(至少不知道如何)。 – Alexey 2010-12-10 10:33:39