【问题标题】:Django: what is the better way to get users info from models in view or template?Django:从视图或模板中的模型获取用户信息的更好方法是什么?
【发布时间】:2019-11-16 03:20:35
【问题描述】:

我有几个 django 模型,我想在模板中为几个用户显示一些信息。 以下是型号:

class CustomUser(AbstractUser):
    def __str__(self):
        return self.email

class Post(models.Model):
    author = models.ForeignKey(CustomUser,on_delete=models.CASCADE,)
    text = models.TextField()
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)
    post_url = models.URLField(max_length = 200, blank = True)
    slug = models.SlugField(unique=True, blank=True)

class subscription(models.Model):
    creator = models.ForeignKey(CustomUser,default=None, null=True,on_delete=models.CASCADE,related_name='creator',)
    booster = models.ForeignKey(CustomUser,default=None, null=True,on_delete=models.CASCADE,related_name='booster')
    sub_value = models.FloatField(blank = True)
    sub_id = models.TextField(blank = True)
    status = models.BooleanField(default=False)
    dateSubscribed = models.DateTimeField(default=timezone.now)
    dateSubscriptionEnded = models.DateTimeField(default=timezone.now)
    paymentCount = models.FloatField(default= 0)

我想将几个用户传递给模板并显示每个用户有多少帖子和订阅?我想知道最好的方法是什么?视图中的帖子和订阅者信息数量是否更好,只是将这些内容传递给模板,还是让用户在模板中获取该信息?谢谢!

【问题讨论】:

  • 如果你想在列表视图中看到它,你可以做 Post.objects.all().order_by('author')

标签: django django-templates django-views


【解决方案1】:

模型 => 视图 => 模板

尝试在视图中尽可能多地解析模型中的信息。这样做的原因是视图中的纯 python 运行速度快,并且更适合使用纯 python。因此,当我可以尝试将视图中的信息分解为对象列表时。所以以你为例。

确定您想要的用户并将其添加到列表中,然后使用用户名或 id 遍历列表过滤。 例如:

Post.objects.filter(author='User')

然后创建一个包含相关用户、帖子计数和子信息的对象列表。 然后将其传递给模板,您可以使用对象中的所有相关数据遍历列表。

希望清晰有用,其中一些是我自己的开发偏见,可能有更好的方法,但这就是我过去处理类似问题的方式。祝你好运!

【讨论】:

  • 嘿,我在实现这个时遇到了麻烦。我问了另一个后续问题here。如果可能,你能回答这个问题吗?谢谢!
猜你喜欢
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 2022-07-11
  • 1970-01-01
  • 2017-04-26
  • 2011-11-02
  • 1970-01-01
相关资源
最近更新 更多