Python 扩大事件后使帖子离线的可能性

Python 扩大事件后使帖子离线的可能性,python,django,django-models,django-templates,Python,Django,Django Models,Django Templates,我正在尝试扩展我在使用此代码时显示的函数: @property def is_expired(self): print(self.publishing_date) if self.membership == "One Month": if self.publishing_date + datetime.timedelta(days=30) < datetime.datetime.now(): message = 'Scaduto'

我正在尝试扩展我在使用此代码时显示的函数:

@property
def is_expired(self):
    print(self.publishing_date)
    if self.membership == "One Month":
        if self.publishing_date + datetime.timedelta(days=30) < datetime.datetime.now():
            message = 'Scaduto'
            return message
        else:
            expiring_date = self.publishing_date + datetime.timedelta(days=30)
            delta = expiring_date - datetime.datetime.now()
            return delta
    else:
        if self.publishing_date + datetime.timedelta(days=365) < datetime.datetime.now():
            message = 'Scaduto'
            return message
        else:
            expiring_date = self.publishing_date + datetime.timedelta(days=365)
            delta = expiring_date - datetime.datetime.now()
            return delta
    return False
@属性
def已过期(自身):
打印(自发布日期)
如果self.membership==“一个月”:
如果self.publishing_date+datetime.timedelta(天=30)
我要使用此新模板:

  {% for asset in user_details.authorized_user_set.all %}
    {% if not asset.is_expired %}
    <tr>
      <td class="text-left"><p><strong><a class="text-info" href="{{ asset.get_absolute_url }}">{{ asset.title }}</a></strong></p></td>
      <td class="text-center">
        {% if asset.type == "3D Region" %}
          <p class="badge badge-pill badge-primary">{{ asset.type }}</p>
        {% elif asset.type == "3D Village" %}
          <p class="badge badge-pill badge-secondary">{{ asset.type }}</p>
        {% else %}
          <p class="badge badge-pill badge-success">{{ asset.type }}</p>
        {% endif %}
      </td>
      <td class="text-right"><p>{{ asset.publishing_date }}</p></td>
      <td class="text-center">
        {% if asset.membership == "One Month" %}
          <p class="badge badge-pill badge-warning">{{ asset.membership }}</p>
        {% else %}
          <p class="badge badge-pill badge-danger">{{ asset.membership }}</p>
        {% endif %}
      </td>
      <td class="text-right"><p>{{ asset.delta }}</p></td>
    </tr>
    {% endif %}
  {% endfor %}
{user\u details.authorized\u user\u set.all%}
{%if not asset.is_expired%}

{%if asset.type==“3D区域”%}

{{asset.type}

{%elif asset.type==“3D村”%}

{{asset.type}

{%else%}

{{asset.type}

{%endif%} {{asset.publishing_date}

{%if asset.membership==“一个月”%}

{{asset.membership}

{%else%}

{{asset.membership}

{%endif%} {{asset.delta}}

{%endif%} {%endfor%}
在Django管理面板中,我可以正确地看到我想要的所有内容,如下图所示,但模板给了我一个空表。如果我删除了else条件,即return delta everythings可以正常工作,那么问题就在这里,但是如果我使用完整的代码,我不知道为什么Django管理面板中的一切都可以正常工作


它返回一个空表,因为您的属性
已过期
始终返回非false值。您的
asset.is_expired
检查应检查
asset.is_expired==“Scaduto”

但是,我建议您在模型中使用以下逻辑:

@属性
def到期日(自我):
如果self.membership==“一个月”:
返回self.publishing\u date+datetime.timedelta(天=30)
其他:
返回self.publishing\u date+datetime.timedelta(天=365)
@财产
def已过期(自身):
return self.expiration\u date
然后,您可以根据需要在模板中使用它。如果您希望将其设置为“管理”面板中的设置:

  {% for asset in user_details.authorized_user_set.all %}
    <tr>
      <td class="text-left"><p><strong><a class="text-info" href="{{ asset.get_absolute_url }}">{{ asset.title }}</a></strong></p></td>
      <td class="text-center">
        {% if asset.type == "3D Region" %}
          <p class="badge badge-pill badge-primary">{{ asset.type }}</p>
        {% elif asset.type == "3D Village" %}
          <p class="badge badge-pill badge-secondary">{{ asset.type }}</p>
        {% else %}
          <p class="badge badge-pill badge-success">{{ asset.type }}</p>
        {% endif %}
      </td>
      <td class="text-right"><p>{{ asset.publishing_date }}</p></td>
      <td class="text-center">
        {% if asset.membership == "One Month" %}
          <p class="badge badge-pill badge-warning">{{ asset.membership }}</p>
        {% else %}
          <p class="badge badge-pill badge-danger">{{ asset.membership }}</p>
        {% endif %}
      </td>
      <td class="text-right"><p>{{ asset.delta }}</p></td>
    </tr>
  {% endfor %}
{user\u details.authorized\u user\u set.all%}

{%if asset.type==“3D区域”%}

{{asset.type}

{%elif asset.type==“3D村”%}

{{asset.type}

{%else%}

{{asset.type}

{%endif%} {{asset.publishing_date}

{%if asset.membership==“一个月”%}

{{asset.membership}

{%else%}

{{asset.membership}

{%endif%} {{asset.delta}}

{%endfor%}
它正在运行,谢谢!使用单个简单函数是一个更好的解决方案,因为它可以合并每个函数以生成更复杂的函数。我也可以在模型中使用
expiration\u date
而不是
delta
,并使用
timeuntil
像这样的
{asset.expiration\u date | timeuntil}查看倒计时