显示用户的注册时间(自会员)

时间:2021-04-15 09:46:40

标签: python django django-models time

我正在构建一个博客 Web 应用程序,我正在尝试实现一个功能。

我想做什么:-

我正在尝试显示 Date or Time of user's signup(就像堆栈溢出一样(2 个月以来的成员))

models.py

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,default='',unique=True)
    full_name = models.CharField(max_length=100,default='')
    time = models.DateTimeField(auto_now_add=True)

    @property
    def age(self):
        current_datetime = datetime.now(tz=datetime.timezone.utc)
        return (current_datetime - self.time).days

模板.html

{{ request.user.profile.time }}

我试图搜索,但什么也没找到。

任何帮助将不胜感激。

提前致谢

2 个答案:

答案 0 :(得分:1)

您可以使用 django-model-utils。更具体地说,创建继承 TimeStampedModel 的模型。

要呈现“since”,您可以使用 django.contrib.humanize.templatetags.humanize

直接在代码中使用:

humanize.naturaltime(datetime.datetime.now() - yourmodelinstance.created)

在模板中使用:

{% load humanize %}

{{ yourmodelinstance.created | naturaltime }}

您的示例如下所示:

import datetime
from django.contrib.humanize.templatetags import humanize
from model_utils.models import TimeStampedModel

class Profile(TimeStampedModel):
    user = models.OneToOneField(User, on_delete=models.CASCADE, default='', unique=True)
    full_name = models.CharField(max_length=100, default='')

    @property
    def age(self):
        return humanize.naturaltime(datetime.datetime.now() - self.created)

要摆脱很多毫秒,您可以将 age 属性返回值替换为:

@property
def age(self):
    return humanize.naturaltime(datetime.datetime.now().replace(microsecond=0) - self.created.replace(microsecond=0)

答案 1 :(得分:1)

您可以在模型中使用 property。通过使用它,您将能够在每次查询 age 模型时获取 Profile

from datetime import datetime, timezone

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, default='', unique=True)
    full_name = models.CharField(max_length=100, default='')
    time = models.DateTimeField(auto_now_add=True)

    @property
    def age(self):
        current_datetime = datetime.now()
        #current_datetime = datetime.now(timezone.utc)  for tz aware datetimes
        return (current_datetime - self.time).days
相关问题