外键约束失败,Django

时间:2019-04-18 11:21:56

标签: python django

我必须通过表单插入帖子,但是当我提交时,我收到此错误FOREIGN KEY约束失败,问题出在作者字段上

models.py

class Post(models.Model):
    STATUS_CHOICES = (
        ('draft','Draft'),
        ('published','Published'),
    )

    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=120)
    author = models.ForeignKey('auth.User',related_name='blog_posts',on_delete=models.CASCADE,blank=True, null=True)
    body = RichTextField()
    created = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10,choices=STATUS_CHOICES,default='draft')
    tag = models.OneToOneField(Tag,related_name="blog_tag",on_delete=models.CASCADE,default=0)

    def __str__(self):
        return self.title

views.py

def tagView(request,name):
    tag = Tag.objects.get(name=name)
    post_form = PostForm(request.POST or None)
    if request.method == 'POST':
        post_form = PostForm(request.POST)
        if post_form.is_valid():
            item = post_form.save(commit=False)
            item.author = request.user
            item.save()

            return HttpResponseRedirect(request.path_info)
    context = {
        'post_form' : post_form,
        'tag' : tag,
    }
    return render(request,'blog/tagPage.html',context)

forms.py

class PostForm(forms.ModelForm):

    class Meta:
        model = Post
        fields = ['title','body']

模板

<form class="post-form" method="POST" enctype="multipart/form-data" action="">
    {% csrf_token %}
    {{ post_form }}
    <input class="post-form-submit submit" type="submit" value="Save">
  </form>

2 个答案:

答案 0 :(得分:0)

如果“作者”字段有问题,请确保导入auth.User

答案 1 :(得分:0)

我的猜测是您正在尝试将帖子添加为匿名用户,但匿名用户不为null(尽管id)。另外,请勿使用'auth.User'并遵循documentation中的说明。