簡體   English   中英

IntegrityError Django ForeignKey 設置為無

[英]IntegrityError Django ForeignKey sets to none

我在為 author 變量的 model 字段之一中設置外鍵時遇到了問題。 見下文:


class BugTracker(models.Model):
    project_number= models.IntegerField(primary_key=True)
    assignee=  models.ForeignKey(Developer, on_delete=models.CASCADE)
    priority = models.CharField(max_length=10, choices=priority_choices)
    summary=models.TextField()
    status= models.CharField(max_length=20, choices=progress)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    created_at=models.DateTimeField(default=timezone.now)
    updated_at=models.DateTimeField(auto_now=True)
   
    def __str__(self):
        return self.summary

    def get_absolute_url(self): 
        return reverse("bug_list")


"IntegrityError at /projects/create/
NOT NULL constraint failed: core_bugtracker.author_id
Request Method: POST
Request URL:    http://127.0.0.1:8000/projects/create/
Django Version: 4.1.5
Exception Type: IntegrityError
Exception Value:    
NOT NULL constraint failed: core_bugtracker.author_id"

只要我將“null=True”添加到 ForeignKey 字段,它就可以工作並且我沒有收到錯誤,但是模板顯示我的變量 ({bug.author}} 等於“None”,無論我是誰signed in as. 我嘗試多次刪除我的數據庫和遷移文件,但它仍然不起作用。

如果您在保存BugTracker model 時沒有將“作者”作為字段傳遞,您將得到 ({bug.author}} as None,因為您在“作者”字段聲明中設置了“null=True”——這意味着您可以在不傳遞“作者”字段的情況下保存BugTracker model,它默認為空/無。

如果你想設置/添加作者 object 到 bug_tracker_object,你可以執行以下操作。 (注意:bug_tracker_object 是您使用 project_number、assignee、priority 等字段填充的BugTracker object。)

author_object = Author.objects.get(id=<your_author_id>)
bug_tracker_object.author_object = author_object 
bug_tracker_object.save()

暫無
暫無

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

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