我试图覆盖此表单上的 init 方法。它看起来像这样:
def __init__(self, *args, **kwargs):
fr = None
if kwargs.get('friend', False):
fr = Friend.objects.get(pk=kwargs.get('friend'))
super(CreateFriendForm, self).__init__(*args, **kwargs)
self.fields["{}_house".format(fr.name)] = forms.ModelChoiceField(queryset=Houses.objects.all(), required=False)
所以,我想抓住朋友kwargs并按照你上面的说法使用它。根据朋友的传递,我会添加一个字段。在我的测试中,我传递了以下数据:
data = {
"user": self.user.pk,
"friend": self.friend.pk,
"language": 'en'
}
friend = self.form(data)
# Validity
self.assertTrue(friend.is_valid())
friend.save()
但是,我收到一条错误消息,指出有一个关键错误:
if kwargs.get('friend', False):
我传递了必要的数据(朋友,用户等),但它似乎并不在kwargs中。这里的问题是什么?感谢。
答案 0 :(得分:1)
问题是我将数据作为arg而不是作为kwarg传递到表单中。改变:
friend = self.form(data)
为:
friend = self.form(data=data)
修正了我遇到的主要问题。