簡體   English   中英

調試python django項目

[英]Debugging an python django project

我是python開發人員,並遵循一個python django示例項目。

現在我遇到一個錯誤,仍然找不到解決方案:

"IntegrityError at /blog/1/comments/new/
NOT NULL constraint failed: blog_comment.author_id"

希望對這個問題有幫助的建議,謝謝...

"models.py":

class Comment(models.Model):
        post = models.ForeignKey(Post, on_delete=models.PROTECT)  #20190613 added some code by jpanda 'on_delete'
        author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.DO_NOTHING, db_constraint= False)
        message = models.TextField()

        def get_absolute_url(self):

                return reverse('blog:post_detail', args=[self.post_id])

"views.py":

class CommentCreateView(CreateView):
    model = Comment
    form_class = CommentForm

def form_valid(self, form):
        comment = form.save(commit=False)
        comment.post = get_object_or_404(Post, pk = self.kwargs['post_pk'])
        comment.author = self.request.user
        comment.save()
        return super(CommentCreateView, self).form_valid(form)

  comment_new = CommentCreateView.as_view()

在注釋表單中添加注釋后,我必須將注釋添加到發布面板中,但是會出現類似上面的錯誤:我不完全知道原因:

盡管您的問題有很多不清楚的地方。 但是我假設在運行./manage.py makemigrations命令時會發生此錯誤。 該錯誤是因為數據庫要求您為所有行都具有一個author字段的值。 這是因為models.ForeignKey()null參數默認情況下為False 表示它不允許null值。

現在顯然,從運行makemigrations命令開始,您沒有為字段輸入任何值或數據。 但是,當您嘗試向包含某些條目的已遷移模型(或表)添加額外字段時,可能會發生這種情況。 因此,當您添加該額外字段(在您的情況下可能是author ,它將使用該額外條目更新表。 但是前面的行對該字段沒有任何值。 意味着它們將為null 但是由於默認值為null=False ,因此會出現此錯誤。

如果允許您的author ForeignKey為null=True則將解決此問題。 意味着已經存在的條目可以具有null值。

author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.DO_NOTHING, db_constraint= False)

另一個解決方案

如果您只是在做一個示例項目,而數據庫中的數據對您而言並不那么重要。 您也可以刪除現有表或清理整個數據庫。 檢查此鏈接以供參考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM