2015-05-19 2 views
0

Я пытаюсь добавить Несколько связанных объектов с родительским объектом с Django.
Я получаю ошибку: int() argument must be a string or a number, not 'Tag'Добавить несколько связанных объектов в родительскую модель с Django

Мой код выглядит следующим образом:

def ask(request): 

    form = AskQuestionForm 

    if request.method == 'POST': 

     form = AskQuestionForm(request.POST) 

     if form.is_valid(): 

      tags = request.POST.getlist('tags') 

      # Category 
      qcat = Category.objects.filter(id=request.POST.get('category')).first() 

      o = Question.objects.create(
       title = request.POST.get('title'), 
       body = request.POST.get('body'), 
       category = qcat, 
       user = request.user 
      ) 

      for t in tags: 
       rt = Tag.objects.get_or_create(word=t) 
       o.tags.add(rt) 

      return redirect('questions.index') 

    return render(request, 'questions/ask.html', { 
     'form' : form 
    }) 

Я хочу, чтобы добавить метки к вопросу объекта. Что я делаю не так?

ответ

2

get_or_create() возвращает tuple(object, created). Поэтому измените создание тега на:

rt, _ = Tag.objects.get_or_create(word=t) 
+0

что такое символ подчеркивания? – intelis

+0

Это просто имя переменной. Вы можете назвать его 'created', если хотите:' rt, created = ... ' – catavaran

+0

отлично, теперь он работает – intelis

Смежные вопросы