Python 如何使用相关模型中的对象填充ModelForm中字段的初始值?
我的问题是下面第五行(带所有问号的问题):Python 如何使用相关模型中的对象填充ModelForm中字段的初始值?,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,我的问题是下面第五行(带所有问号的问题): 问题是我无法从志愿者语言(链接表)中检索对象,因为我需要将志愿者对象传递给它以对其进行过滤。我可以在save方法中执行此操作,但不能在第5行执行此操作。如果要向表单传递附加参数并使用该值设置字段,可以执行以下操作: class EditProfileForm(forms.ModelForm): def __init__(self, initial_volunteer, *args, **kwargs): super(E
问题是我无法从志愿者语言(链接表)中检索对象,因为我需要将志愿者对象传递给它以对其进行过滤。我可以在save方法中执行此操作,但不能在第5行执行此操作。如果要向表单传递附加参数并使用该值设置字段,可以执行以下操作:
class EditProfileForm(forms.ModelForm):
def __init__(self, initial_volunteer, *args, **kwargs):
super(EditProfileForm, self).__init__(*args, **kwargs)
self.fields['language'] = forms.ModelMultipleChoiceField(
label=_(u'Language'),
queryset=Language.objects.all(),
# now you have the value you passed to use here
initial=VolunteerLanguage.objects.filter(volunteer=initial_volunteer)
)
如果
中已有的self.profile
是您想要使用的字段,您可以在中创建字段,方法与我的示例相同,只是不要传递新值,而是使用self.profile
。在中设置字段的初始值\uuuuu init\uuuuu
是志愿者模型的一个实例,但我不确定如何访问EditProfileForm类顶部变量声明中的\uuuuuuu init\uuuuu
中的变量集
class EditProfileForm(forms.ModelForm):
def __init__(self, initial_volunteer, *args, **kwargs):
super(EditProfileForm, self).__init__(*args, **kwargs)
self.fields['language'] = forms.ModelMultipleChoiceField(
label=_(u'Language'),
queryset=Language.objects.all(),
# now you have the value you passed to use here
initial=VolunteerLanguage.objects.filter(volunteer=initial_volunteer)
)