NOT NULL约束失败:main_post.url

时间:2015-12-23 14:33:19

标签: python django

我尝试了我能找到的所有失败的解决方案。 我删除了迁移文件并运行了makemigrations / migrate 我有__init__.py的迁移文件 但它们都不起作用...... 我真的不知道出了什么问题。 我的猜测是数据库中的某些内容搞砸了,但是我已经删除并恢复它并且出现了同样的错误。

  

完整错误消息是:/ add_post /

处的IntegrityError      

NOT NULL约束失败:main_post.url

这是我的代码,任何帮助都是超级appreicated。

Models.py

class Post(models.Model):
    category = models.ForeignKey(Category)
    pub_date = models.DateTimeField(auto_now_add = True)
    title = models.CharField(max_length = 100)
    content = FroalaField()
    url = models.URLField(max_length=250, blank=True, null=True)
    moderator = models.ForeignKey(User, blank=True, null=True)
    rank_score = models.FloatField(default= 1)

    views = models.IntegerField(default=0)
    image = models.ImageField(upload_to="images",blank=True, null=True)
    slug = models.CharField(max_length=100, unique=True)

    objects = models.Manager()            # default manager


    @property
    def domain(self):
        return urlparse(self.url).netloc

    @property
    def url(self):
        if self.link:
            return self.link
        return current_request().build_absolute_uri(self.get_absolute_url())


    def save(self, *args, **kwargs):
        self.slug = uuslug(self.title, instance=self, max_length=100)
        super(Post, self).save(*args, **kwargs)
    def __unicode__(self):
        return self.title 


    # for redirecting URL so slug is always shown
    def get_absolute_url(self):
        return '/%s/%s' % (self.id, self.slug)

forms.py

class PostForm(forms.ModelForm):
    title = forms.CharField(max_length=128, help_text="plz enter")

    url = forms.URLField(max_length=200,
                         help_text="Please enter the URL of the page.")
    class Meta:
        model = Post
        fields = ['title', 'content', 'views', 'category', 'url']

我有标题,内容,观点字段但是不要在这里写它们。

我的views.py非常确定没有错,但以防万一

class PostCreateView(CreateView):

     model = Post
     form_class = PostForm
     template_name = 'main/add_post.html'

     def form_valid(self, form):
            self.object = form.save(commit=False)
            # any manual settings go here
            self.object.save()
            return HttpResponseRedirect(reverse('post', args=[self.object.slug]))

     @method_decorator(login_required)
     def dispatch(self, request, *args, **kwargs):
            return super(PostCreateView, self).dispatch(request, *args, **kwargs)

这是我的主持人

moderator = models.ForeignKey(User)

什么是这个NOT NULL约束失败:main_post.moderator_id ...什么不是空约束意味着/

1 个答案:

答案 0 :(得分:0)

如果您要将form_valid设置为登录用户,则可以执行此操作,即查看def form_valid(self, form): self.object = form.save(commit=False) self.object.moderator = self.request.user self.object.save() return HttpResponseRedirect(reverse('post', args=[self.object.slug])) 方法。

null=True

完成此操作后,moderator字段将不再需要{{1}}。