在modelformset中编辑ForeignField查询集

时间:2015-02-12 15:26:54

标签: django formset

我有以下型号

class HasJobs(models.Model):
    account = models.ForeignKey(Account)
    job = models.ForeignKey(Job)

和模型

class HasJobsModelForm(models.Model):
    class Meta:
        model = HasJobs

在我看来,我创建了一个modelformset

jobs = Job.objects.filter(#somefiltering here)
has_jobs = HasJobs.objects.filter(#some filtering here)

hasjobsformset = modelformset_factory(HasJobs, form=HasJobsModelForm)
formset = hasjobsformset(queryset=has_jobs)

我还想在作业查询集中设置作业字段,就像我可以做的那样如果我不必处理像这样的表单集:

form.fields['job'].queryset = jobs

这可以自动在formset中完成,或者我必须使用formset中的每种形式:

for job_form in formset:
    job_form.fields['job'].queryset = jobs

1 个答案:

答案 0 :(得分:0)

我通常是BaseFormset的子类并提供我自己的_construct_form(self, index, **kwargs),根据我的需要进行操作;

更简洁的方法可能是为您的init提供自定义ModelForm方法,并从上述_construct_form中提供您需要的任何参数。