我正在使用UserProfiles,联系人和活动构建网站。我创建了一个表单来添加链接到UserProfile的新事件,其中的成员是从UserProf的联系人列表中选择的。 起初,一个Event对一个联系人有一个ForeignKey,EventForm是ModelChoice,一切正常。我可以处理表单,并将联系人添加到事件中,并将事件添加到登录的UserProfile中。
然后当我尝试使用ManyToManyField和EventForm ModelMultipleChoice创建一个Event时,我得到'members'是这个函数的错误的无效关键字参数'。无法想象这一个。真的很感谢你的帮助:)
的观点:
def add_events(request):
user = request.user
contacts_list = user.get_profile().contacts.all().order_by('first_name')
if user.is_authenticated():
if request.method == 'POST':
form = EventForm(request.POST)
if form.is_valid():
na = form.cleaned_data['name']
da = form.cleaned_data['date']
de = form.cleaned_data['description']
me = form.cleaned_data['members']
event = Event.objects.create(user=user.get_profile(), name=na, date=da, description=de, members=me)
return HttpResponseRedirect('/events')
else:
form.fields['members'].queryset = user.get_profile().contacts.all().order_by('first_name')
else:
form = EventForm()
form.fields['members'].queryset = user.get_profile().contacts.all().order_by('first_name')
return render_to_response('add_events.html', {'user': user, 'form': form, 'usp': user.get_profile(), 'contacts_list': contacts_list}, context_instance=RequestContext(request))
模型:
class EventForm(forms.Form):
name = forms.CharField(max_length=100, required=True)
date = forms.DateField()
description = forms.CharField(max_length=200)
members = forms.ModelMultipleChoiceField(queryset=Profile.objects.all(), widget=forms.CheckboxSelectMultiple)
class Event(models.Model):
user = models.ForeignKey(UserProfile, related_name='event')
members = models.ManyToManyField(Profile)
name = models.CharField(max_length=100)
description = models.CharField(max_length=200)
date = models.CharField(max_length=20)
答案 0 :(得分:0)
行
可能会引发错误event = Event.objects.create(user=user.get_profile(), name=na, date=da, description=de, members=me)
__init__()
的{{1}},Model
,只接受正常字段和属性的分配为Event
,不接受M2M字段,因此错误。
将代码更改为以下内容可以解决问题,请检查the doc以获取M2M的分配。
kwargs