首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >NOT NULL约束失败: blogs_comment.blog_id

NOT NULL约束失败: blogs_comment.blog_id
EN

Stack Overflow用户
提问于 2021-08-03 01:56:07
回答 2查看 40关注 0票数 1

我是django的初学者,请帮帮我,我已经试了2个小时了,非常感谢!

<我在/ IntegrityError /431cdef3-d9e7-4abd-bf53-eaa7b188d0fd上得到了这个django错误博客>

python #视图

代码语言:javascript
运行
复制
from django.shortcuts import render
from .models import Blog
from .forms import CommentForm

def home(request):
    template = 'blogs/home.html'
    blogs = Blog.objects.all()
    context = {'blogs':blogs}

    return render(request, template, context)

def blog(request, pk):
    template = 'blogs/blog.html'
    blog = Blog.objects.get(pk=pk)
    context = {'blog':blog}

    if request.method == 'POST':
        form = CommentForm(request.POST)
        form.save()
    else:
        form = CommentForm()
    context['form'] = form
    return render(request, template, context) 

#表单

代码语言:javascript
运行
复制
from django.forms import ModelForm
from .models import Comment
class CommentForm(ModelForm):
    class Meta:
        model = Comment
        fields = ['description']

#机型

代码语言:javascript
运行
复制
from django.db import models
import uuid


class Blog(models.Model):
    header = models.CharField(max_length=200)
    posts = models.TextField(null=True)
    footer = models.TextField(null=True, blank=True)
    id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
    def __str__(self):
        return self.header

class Comment(models.Model):
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE, related_name='comments')
    description = models.TextField(blank=True, null=True)
    id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True, editable=False)
    def __str__(self):
        return self.description `
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-03 02:45:53

试试这个:

代码语言:javascript
运行
复制
    def blog(request, pk):
        template = 'blogs/blog.html'
        blog = Blog.objects.get(pk=pk)
        context = {'blog':blog}
    
        if request.method == 'POST':
            form = CommentForm(request.POST)
            if form.is_valid():
                comment = form.save(commit=False) # don't save the comment yet
                comment.blog = blog # assign the blog
                comment.save() # then save
        else:
            form = CommentForm()
        context['form'] = form
        return render(request, template, context) 

在将评论提交到数据库之前,首先将博客添加到评论中。

票数 0
EN

Stack Overflow用户

发布于 2021-08-03 02:18:20

您没有使用Foreignkey key值进行添加。试试这个吧。

代码语言:javascript
运行
复制
def blog(request, pk):
    template = 'blogs/blog.html'
    blog = Blog.objects.get(pk=pk)
    context = {'blog':blog}

    if request.method == 'POST':
        form = CommentForm(request.POST, instance=blog)
        if form.is_valid():
      
            form.save()
    else:
        form = CommentForm(instance=blog)
    context['form'] = form
    return render(request, template, context) 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68629523

复制
相关文章

相似问题

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