UserProfiles, contacts 및 Events로 사이트를 구축하고 있습니다. UserProf의 연락처 목록에서 선택된 멤버로 UserProfile에 링크 된 새 이벤트를 추가하는 양식을 만들었습니다. 처음에는 이벤트에 연락처에 대한 ForeignKey가 있었고 EventForm은 ModelChoice였으며 모든 것이 작동했습니다. 양식을 처리 할 수 있었고 연락처가 이벤트에 추가되었으며 이벤트는 로그인 한 UserProfile에 추가되었습니다.처리 Django 폼은 x (many to many) 필드는 잘못된 키워드 인수입니다.
Then ManyToManyField 및 EventForm ModelMultipleChoice를 사용하여 이벤트를 만들려고하면 '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)
IIRC 마지막 줄은'event.members.add해야한다 (* form.cleaned_data [ '회원'])' –
OKM, 작동, 감사합니다! bruno, 나도 그걸 시험해 볼거야. – Daya
@ brunodesthuilliers 둘 다 작동 할 수 있습니다. 할당은 실제로'.clear()'이고'.add()'입니다. – okm