首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django ManyToManyField保存

django ManyToManyField保存
EN

Stack Overflow用户
提问于 2018-08-31 05:45:46
回答 1查看 648关注 0票数 0

有许多字段的表单(日期、字符、文本、图像、URL.)而且效果很好。我的意思是,值必须提交给DB。但是当我添加ManyToManyField时,它并没有将这个MultipleChoice表单的值保存到DB中。知道为什么吗?

models.py:

代码语言:javascript
复制
class EventTag(models.Model):
    tags = models.CharField(max_length=300)

    def __str__(self):
        return self.tags

class Article(models.Model):
    source = models.CharField(max_length=100)
    source_img = models.ImageField(default='default.png', blank=True)
    #other fields
    event_tags = models.ManyToManyField(EventTag, blank=True)

forms.py:

代码语言:javascript
复制
class CreateArticle(forms.ModelForm):
    class Meta:
        model = models.Article
        fields = ['source', 'source_img', 'event_tags', ]

views.py:

代码语言:javascript
复制
def article_create(request):
    if request.method == 'POST':
        form = forms.CreateArticle(request.POST, request.FILES)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.author = request.user
            instance.save()
            return redirect('articles:list')
    else:
        form = forms.CreateArticle()
    return render(request, 'articles/article_create.html', { 'form': form })
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-31 06:42:56

保存表单后,必须调用form.save_m2m()。你的观点一定是这样的:

代码语言:javascript
复制
def article_create(request):
    if request.method == 'POST':
        form = forms.CreateArticle(request.POST, request.FILES)
        if form.is_valid():
            instance = form.save(commit=False)
            instance.author = request.user
            instance.save()
            form.save_m2m()
            return redirect('articles:list')
    else:
        form = forms.CreateArticle()
    return render(request, 'articles/article_create.html', { 'form': form })
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52109137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档