Note that there are some explanatory texts on larger screens.

plurals
  1. POIs it possible to pass additional arguments or form instances to django formset?
    text
    copied!<p>My models.py:</p> <pre><code>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) </code></pre> <p>I'd like to have form similar to:</p> <p>--company--, --time period--</p> <ul> <li>data element1: --value--, --unit--, --source--</li> <li>data element2: --value--, --unit--, --source--</li> <li>...</li> <li>data elementN: --value--, --unit--, --source--</li> </ul> <p>My forms.py now:</p> <pre><code>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') </code></pre> <p>and usage:</p> <pre><code>top_form = CompanyChainTimeForm(request.POST or None) CompanyDataFormSet = formset_factory(CompanyDataForm, extra=X) formset = CompanyDataFormSet() </code></pre> <p>Is it possible to initialize empty formset, then fetch DataElement.objects.all() and make something similar to formset.add(CompanyDataForm(...DataElement.pk...))</p> <p>Or what would be the best option for my case?</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload