所以我有两个模型——UserInfo
模型,它引用了 Django 的内置User
模型,Article
模型,由每个用户编写,如下所示。
class UserInfo(models.Model):
objects = models.Manager()
this_user = models.OneToOneField(User, on_delete=models.CASCADE, related_name = 'userinfo', null=True, default=None)
real_name = models.CharField(max_length=20, blank=False)
class Article(models.Model):
objects = models.Manager()
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name = 'article', null=True, default=None)
body = models.CharField(max_length=20, blank=False)
这是我的views.py
.
def create_ans_us(request):
current_article = Article.objects.get(id=1)
...
context = {
'current_article' : current_article,
}
return render(request, 'main/main.html', context)
在 Django 模板标签中,我试图渲染如下所示的real_name
字段UserInfo
。
<html>
...
{{current_article.user_id.real_name}}
</html>
现在很明显,我想将real_name
字段呈现给模板。我如何使这成为可能?提前致谢。:)
您应该遵循author
的current_article
,因此:
{{ current_article.author.userinfo.real_name }}
这将导致额外的数据库调用。您可以在使用[Django-doc]获取对象的同一查询中获取作者的数据:.select_related(…)
from django.shortcuts import get_object_or_404
def create_ans_us(request):
current_article = get_object_or_404(
Article.objects.select_related('author', 'author__userinfo'),
id=1
)
…
context = {
'current_article' : current_article,
}
return render(request, 'main/main.html', context)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句