2012-07-01 5 views
0

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) 

답변

0

오류는 라인 여기 Model

event = Event.objects.create(user=user.get_profile(), name=na, date=da, description=de, members=me) 

__init__()에 의해 제기 될 수있다 Event, 일반 필드에 대한 할당 만 허용 속성이 kwargs 인 경우 M2M 입력란이 허용되지 않으므로 오류가 발생합니다.

아래 코드를 변경하면 문제가 해결 될 수 있으므로 the doc에 M2M 할당을 확인하십시오.

event = Event.objects.create(user=user.get_profile(), name=na, date=da, description=de) 
event.members = form.cleaned_data['members'] 
+0

IIRC 마지막 줄은'event.members.add해야한다 (* form.cleaned_data [ '회원'])' –

+0

OKM, 작동, 감사합니다! bruno, 나도 그걸 시험해 볼거야. – Daya

+0

@ brunodesthuilliers 둘 다 작동 할 수 있습니다. 할당은 실제로'.clear()'이고'.add()'입니다. – okm