如何解决在django中将文本模型中的作者姓名渲染为Foreignkey
我想将每个帖子的作者呈现到模板上
在我的models.py文件中
class User(AbstractBaseUser):
email = models.EmailField(verbose_name="Email",max_length=250,unique=True)
date_joined = models.DateTimeField(verbose_name='Date joined',auto_now_add=True)
last_login = models.DateTimeField(verbose_name='Last login',auto_now=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
is_superuser = models.BooleanField(default=False)
full_name = models.CharField(verbose_name="Full name",max_length=150,null=True)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['full_name']
objects = MyAccountManager()
def __str__(self):
return self.full_name
# For checking permissions.
def has_perm(self,perm,obj=None):
return self.is_admin
# For which users are able to view the app (everyone is)
def has_module_perms(self,app_label):
return True
class Text(models.Model):
title = models.CharField(max_length=200,null=True)
document = models.TextField(max_length=None,null=True)
requirements = models.TextField(max_length=200,null=True)
date_created = models.DateField(auto_now_add=True,null=True)
deadline = models.DateField(null=True)
author = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
def __str__(self):
return self.title
NB:我想在主页中渲染它,所以这是我的主页视图
def home(request):
user = request.user
form = TextForm()
if request.method == "POST":
form = TextForm(request.POST)
if form.is_valid():
obj = form.save(commit=False)
author = User.objects.filter(email=user.email).first()
obj.author = author
form.save()
form = TextForm()
texts = Text.objects.all().order_by('-id')
context = {'form':form,'texts':texts}
return render(request,'main/home.html',context)
我想做一些诸如author_name = Text.author.full_name的操作,然后将author_name渲染到模板中,我不确定这是怎么做的,但是您明白了我的意思 这可能是一些基本的事情,但我无法弄清楚。
解决方法
请在您的html模板中添加以下代码以呈现作者的全名。
{% for obj in texts %}
Author Full Name : {{obj.author.full_name}}
{% endfor %}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。