![](/img/trans.png)
[英]Importing and debugging a Python Django project made in a different environment
[英]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.