2013-03-22 5 views
0

Надеюсь, вы увидите, что я пытаюсь сделать здесь, просто хочу перебрать значения, отправленные для группы, которые выглядят как group = 1,3,5 и т. Д. и добавить их в базу данных. group - это флажок. Поэтому я хотел использовать параметр split. Я получаю следующее сообщение Тхо ....Объект Django 'QuerySet' не имеет атрибута 'split'

объект «QuerySet» не имеет атрибута «разбить»

Так что мое понимание того, что в INIT я использую для заполнения формы, которая является запросом, и мне это нужно, но на почте это должен быть просто список. что я делаю неправильно?

view.py

form = BatchForm(request.user, request.POST) 
     # Check we have valid data before saving trying to save. 
     if form.is_valid(): 
      # Clean all data and add to var data. 
      data = form.cleaned_data 
      groups = data['group'].split(",") 
      for item in form.cleaned_data['group']: 
       batch = Batch(content=data['content'], 
           group=Group.objects.get(pk=item), 
           user=request.user 
          ) 
       batch.save() 

forms.py

class BatchForm(forms.ModelForm): 


    class Meta: 
     model = Batch 
     exclude = ('user', 'group') 



    def __init__(self, user=None, *args, **kwargs): 
     super(BatchForm, self).__init__(*args,**kwargs) 
     if user is not None: 
      form_choices = Group.objects.for_user(user) 
     else: 
      form_choices = Group.objects.all() 
     self.fields['group'] = forms.ModelMultipleChoiceField(
      queryset=form_choices 
     ) 

template.py

{% for value, text in form.group.field.choices %} 


    <input type="checkbox" name="group" value="{{ value }}" /> {{text}}<br /> 

{% endfor %} 

ответ

5

Поскольку вы используете очищенные данные, и это ModelMultipleChoice поле, он на самом деле является queryset.

попробовать что-то вроде этого:

form = BatchForm(request.user, request.POST) 
    # Check we have valid data before saving trying to save. 
    if form.is_valid(): 
     # Clean all data and add to var data. 
     data = form.cleaned_data 
     for group in data['group']: 
      batch = Batch(
       content=data['content'], 
       group=group, 
       user=request.user 
      ) 
      batch.save() 
1
if form.is_valid(): 
     # Clean all data and add to var data. 
     data = form.cleaned_data 
     groups = [x.group for x in form.cleaned_data['group']] 
     for item in groups: 
      batch = Batch(content=data['content'], 
          group=Group.objects.get(pk=item), 
          user=request.user 
         ) 
      batch.save() 
Смежные вопросы