【发布时间】:2011-11-10 18:29:59
【问题描述】:
我正在使用 inlineformset_factory 为客户和会话之间的多对多关系创建字段,并使用中介出勤模型。
我的视图文件中有以下内容:
AttendanceFormset = inlineformset_factory(
Session,
Attendance,
formset=BaseAttendanceFormSet,
exclude=('user'),
extra=1,
max_num=10,
)
session = Session(user=request.user)
formset = AttendanceFormset(request.POST, instance=session)
而且,由于我需要覆盖其中一个表单字段,因此我在表单集基类中添加了以下内容:
class BaseAttendanceFormSet(BaseFormSet):
def add_fields(self, form, index):
super(BaseAttendanceFormSet, self).add_fields(form, index)
form.fields['client'] = forms.ModelChoiceField(
queryset=Client.objects.filter(user=2))
现在,表单可以正常工作,但我需要将一个值传递到表单集中,以便我可以根据当前用户过滤显示的客户端,而不仅仅是使用 id 2。
谁能帮忙?
任何建议表示赞赏。
谢谢。
编辑
对于任何阅读的人来说,这对我有用:
def get_field_qs(field, **kwargs):
if field.name == 'client':
return forms.ModelChoiceField(queryset=Client.objects.filter(user=request.user))
return field.formfield(**kwargs)
【问题讨论】: