django - 如何在 Django 模板中检查模型的名称
问题描述
我正在尝试在我的模板中获取模型的名称,以便我可以在模板中为其提供不同的设计
#views.py
class PostListView(ListView):
model = Post
template_name = 'blog/home.html'
context_object_name = 'posts'
paginate_by = 15
def get_queryset(self):
posts = []
shared_post = []
if self.request.user.is_authenticated:
user_id = self.request.user.id
view_user_post = Post.objects.filter(user=self.request.user)
user_profile = User.objects.get(id=user_id).profile
# print(user_profile)
for profile in user_profile.follower.all():
for post in Post.objects.filter(user=profile.user):
posts.append(post)
for profile in user_profile.follower.all():
for share in Share.objects.filter(user=profile.user):
shared_post.append(share)
chain_qs = chain(posts, view_user_post, shared_post)
print(chain_qs)
return sorted(chain_qs, key=lambda x: x.date_posted, reverse=True)
else:
posts = Post.objects.all().order_by('?')
return posts
#models.py
class Share(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
content = models.TextField(max_length=140, null=True, blank=True)
date_posted = models.DateTimeField(default=timezone.now)
def __str__(self):
return '{}- {}'.format(self.post.title, str(self.user.username))
class Post(models.Model):
title = models.CharField(max_length=140)
content = models.TextField(validators=[validate_is_profane])
likes = models.ManyToManyField(User, related_name='likes', blank=True)
date_posted = models.DateTimeField(default=timezone.now)
user = models.ForeignKey(User, on_delete=models.CASCADE)
image = models.ImageField(upload_to='post_pics', blank=True)
image_2 = models.ImageField(upload_to='post_pics', blank=True)
image_3 = models.ImageField(upload_to='post_pics', blank=True)
restrict_comment = models.BooleanField(default=False)
saved = models.ManyToManyField(User, related_name='saved_post', blank=True)
我需要一种方法来检查模板中模型的名称,可能是 if/else 语句来正确检查。谢谢
解决方案
在模型中创建一个返回模型名称的函数怎么样?
在每个模型的 models.py 中:
def get_my_model_name(self):
return self._meta.model_name
在您的模板中,您可以执行以下操作:
{%if post.get_my_model_name == 'post'%}
Do something ...
推荐阅读
- python-3.x - 如何从包含多个客户条目的表中找到每个唯一客户最常出现的类别?
- sql - Msg 8152, Level 16, State 14, Line 1 字符串或二进制数据将被截断
- twitter-bootstrap-3 - bootstrap3.7 modal 调整宽度到内容
- python - 如何测试 stanfordnlp 是否在 gpu 上运行?
- python - 使用函数运行游戏
- arrays - Solr Facet 在多个术语中拆分字符串。如何包含空格?
- php - 使用 Laravel 资源将字段数据格式化为字典
- sql - SQL Server 中带有 OUTPUT 子句的 UPDATE 查询
- javascript - 无法读取减速器 redux 中未定义的属性“数据”
- c++ - 为缩小转换获得例外