【问题标题】:Accessing additional fields from a grouper in a Django group_by从 Django group_by 中的 grouper 访问其他字段
【发布时间】:2020-09-27 17:45:14
【问题描述】:

如何在 Django group_by 函数中访问除 grouper 以外的字段?

class dateEvent(models.Model):

    event = models.ForeignKey('Event', on_delete=models.CASCADE)
    start_date_time = models.DateTimeField(auto_now=False, auto_now_add=False)

    def __str__(self):
        return "%s" % (self.event.title)

    def description(self):
        return "%s" % (self.event.description)

class Event(models.Model):

    description = RichTextUploadingField(max_length=200)

查看:

def my_view(request):

    events = dateEvent.objects.all()

    context = {
        'events': events,
    }

    return render(request, 'view.html', context)

模板:

<ul>

  {% for event in dateEvents_list %}
      <li><h5>Event: {{ event.grouper }}</h5>
        <h6>Description: {{ event.description }}</h6> #How can access the description of the main event?
      <ul>
          {% for dateEvent in event.list %}
            <li>date: {{ dateEvent.start_date_time }}</li>
          {% endfor %}
      </ul>
      </li>
  {% endfor %}

</ul>

我想要标题,这是石斑鱼,所以没关系,还有描述。

【问题讨论】:

    标签: django python-3.x django-views django-templates


    【解决方案1】:

    您还可以访问您的 grouper 的列表对象以获取有关您组中“第一条记录”的详细信息。所以使用:

       event.grouper.list.0.<any_model_field_you_want>
    

    会工作得很好。我在生产中有这个,它立即解决了我的需求。我在此处对 Django 的拒绝功能请求中发现了这一点:https://code.djangoproject.com/ticket/13452

    如果您需要遍历模型的关系树,您可以执行以下操作。

    event.grouper.list.0.<related_model_name>.<any_model_field_you_want>
    

    【讨论】:

      【解决方案2】:

      您可以使用 event.grouper.&lt;any-model-attribute&gt; 直接从 grouper 访问模型属性。

      在您的示例中,它的外观如下:

      <ul>
      
        {% for event in dateEvents_list %}
            <li><h5>Event: {{ event.grouper }}</h5>
              <h6>Description: {{ event.grouper.description }}</h6>
            <ul>
                {% for dateEvent in event.list %}
                  <li>date: {{ dateEvent.start_date_time }}</li>
                {% endfor %}
            </ul>
            </li>
        {% endfor %}
      
      </ul>
      

      我找不到有关此用法的任何文档。

      【讨论】:

        猜你喜欢
        • 2020-12-16
        • 2020-07-03
        • 1970-01-01
        • 2020-11-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-12-02
        相关资源
        最近更新 更多