我无法解决这个问题...我有 Django 2.2 Python 3.7 和两个应用程序新闻和用户。有必要在新闻应用程序的Post模型中引用users ...应用程序的User模型中的用户名字段。
新闻模型.py
from users.models import User
class Post(models.Model):
****
author = models.ForeignKey(
User,
on_delete=models.CASCADE,
blank=False,
default='',
verbose_name='Автор'
)
用户模型.py
class User(AbstractBaseUser):
***
username = models.CharField(
'Имя пользователя',
max_length=255,
unique=True,
db_index=True,
blank=False,
default='',
)
***
def __str__(self):
return f'Пользователь - {self.username}, Почта - {self.email}'
在__str__方法中,我返回用户名和邮件,这是必要的,但在 HTML 模板中,在 {{ post.author }} 变量中,我只需要用户名......问题是,是否有可能得到通过仅在 Post 模型中进行更改,以免在 HTML 模板中使用循环并且仅使用 {{ post.author }} 以及如何做到这一点?
附言
class Post(models.Model):
****
author = models.ForeignKey(
User.username,
on_delete=models.CASCADE,
blank=False,
default='',
verbose_name='Автор'
)
不起作用:
回溯:ForeignKey 的第一个参数必须是模型、模型名称或字符串“self”
感谢您的关注。
他写对了。ForeignKey 的第一个参数必须是模型,可以是模型的名称,也可以是对自身的引用,即 自己。在您的情况下,它应该是一个模型
User
,删除.username
. 您不能将字段传递给外键。在模板中,您可以简单地引用它{{ post.author.username }}
- 不需要循环