我创建了一个posts
应用程序,并拥有像这样的comment
模型
from django.db import models
from django.conf import settings
from posts.models import Post
class Comment(models.Model):
author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.SET_NULL)
post = models.ForeignKey(Post)
content = models.CharField(max_length=400)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ('-created_at',)
def __str__(self):
return self.content
更糟糕的是,它也改变了order
条评论!
我想让username
仍在那里,并继续订购。
有什么想法吗?
答案 0 :(得分:1)
不要使用models.ForeignKey
在author
模型中设置Comment
属性,而是尝试CharField
,并在views.py
的评论函数中添加作业行每当Comment.author
创建它时,请将此author
属性等于其作者姓名。
希望这会有所帮助:)
答案 1 :(得分:1)
正在设置null
,因为您将author
定义为null=True
和on_delete=models.SET_NULL
,为了保持作者ID的完整性,您可以使用on_delete=models.DO_NOTHING
但作为doc says
您需要手动将
ON DELETE
约束添加到数据库中 字段
但是为了真正保留用户名,您需要对其进行非规范化并使用单独的username
字段,您需要在保存评论时设置该字段。