Django: как сохранить данные в ManyToManyField - PullRequest
0 голосов
/ 15 января 2019

Ваша помощь будет полезна для меня. Вот эти коды:

models.py:

from django.db import models

class TagModel(models.Model):
    tag = models.CharField(max_length=50)
    def __str__(self):
        return self.tag

class MyModel(models.Model):
    title = models.CharField(max_length=50)
    tag = models.ManyToManyField(TagModel)

forms.py:

from django import forms
from .models import *

class MyForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'

views.py:

from django.shortcuts import render, get_object_or_404, redirect
from .models import *
from .forms import *

def MyWriteView(request):
    if request.method == "POST":
        mywriteform = MyForm(request.POST)
        if mywriteform.is_valid():
            confirmform = mywriteform.save(commit=False)
            confirmform.save()
            return redirect('MyDetail', pk=confirmform.pk)
    else:
        mywriteform = MyForm()
    return render(request, 'form.html', {'mywriteform': mywriteform})

form.html (1-я пробная версия):

<form method="post">
  {% csrf_token %}
  {{ mywriteform }}
<button type="submit">Save</button>
</form>

form.html (2-я пробная версия):

<form method="post">
  {% csrf_token %}
  {{ mywriteform.title }}
  <select name="tags" required="" id="id_tags" multiple="">
    {% for taglist in mywriteform.tags %}
    <option value="{{taglist.id}}">{{taglist}}</option>
    {% endfor %}
  </select>
<button type="submit">Save</button>
</form>

Я пытаюсь добавить теги к своему сообщению. Я сделал простой многокомпонентный блог, но он не работает. Я отправил сообщение, нажав кнопку «Сохранить», заголовок был сохранен, а тег - нет. В админе это работало хорошо.

Заранее спасибо.

1 Ответ

0 голосов
/ 15 января 2019

обновить код следующим образом

if mywriteform.is_valid():
        confirmform = mywriteform.save(commit=False)
        confirmform.save()
        mywriteform.save_m2m()
        return redirect('MyDetail', pk=confirmform.pk)

для получения более подробной информации См. Здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...