【问题标题】:Extra data about objects in django templates关于 Django 模板中对象的额外数据
【发布时间】:2010-02-12 22:14:46
【问题描述】:

我有 django 对象:

class Event(models.Model):
   title = models.CharField(max_length=255)
   event_start_date = models.DateField(null=True, blank='true')
   ...

class RegistrationDate(models.Model):
    event = models.ForeignKey(tblEvents)
    date_type = models.CharField(max_length=10, choices=registration_date_type)
    start_date = models.DateField(blank='true', null='true')
    end_date = models.DateField(blank='true', null='true') 

活动可以有早期、正常和延迟注册期。

我编写了一个函数,它接收一个事件并返回以下之一:无、“早期”、“正常”或“延迟”

一切都很好。

在我的应用程序中,我想显示事件列表及其注册状态。所以我做了一个这样的查询。

Events = tblEvents.objects.all()

所以我有关于活动的所有信息,但没有状态。

获取模板中显示的每个事件的状态的最简单/最佳方法是什么。

我认为我可以编写一个模板标签,但这似乎需要更多的工作。

【问题讨论】:

    标签: python django django-models django-templates


    【解决方案1】:

    将属性添加到您的 Event 类,例如:

    class Event:
      # stuff here
    
      @property
      def status(self):
         # do the same thing here as in your status function
         return status
    

    您可以在模板中执行的操作:

    {{ event.status }}
    

    【讨论】:

    • 所以函数查询RegistrationDate表没关系?这就是最初阻止我这样做的原因。
    • @lovefeithswing:不,没关系。如果您担心性能并且查询的结果不会经常变化,您可以缓存结果:docs.djangoproject.com/en/1.1/topics/cache/…
    【解决方案2】:

    我认为你可以让你编写的 Event 类方法的那个函数。然后你可以从模板中调用它。比如……

    {% if event %}
        event.getStatus
    {% endif %}
    

    ...但我有一段时间没玩过 Django。

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 2018-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-22
      • 2021-11-17
      • 2012-02-17
      • 1970-01-01
      相关资源
      最近更新 更多