Python 在django模板中访问字典值

Python 在django模板中访问字典值,python,django,dictionary,django-templates,Python,Django,Dictionary,Django Templates,请帮助我在django模板中显示dictionary的值。我试图通过谷歌找到答案,但没有找到解决方案 下面是模型 class Ride(models.Model): type = models.BooleanField(default=False) add_source = models.ForeignKey(Address, related_name='source') add_destination = models.ForeignKey(Address, rela

请帮助我在django模板中显示dictionary的值。我试图通过谷歌找到答案,但没有找到解决方案

下面是模型

class Ride(models.Model): 
    type = models.BooleanField(default=False)
    add_source = models.ForeignKey(Address, related_name='source')
    add_destination = models.ForeignKey(Address, related_name='destination')
    ride_comment = models.TextField(null=True,max_length=140,blank=True)
    def __unicode__(self):
        return self.ride_comment

class Driver(models.Model):
    ride_id = models.ForeignKey(Ride)
    user_id = models.ForeignKey(User)
    drv_carseats = models.SmallIntegerField(null=True,blank=False)
    def __unicode__(self):
        return self.user_id.username
看法

这是我的模板代码

{% for result in result_list %}
     {% if result %}
         <a href="/rides/ridedetails/{{ result.pk }}">{{ userList[result.pk] }}</a>
         <em>{{ result.add_source }}</em>
         <em>{{ result.add_destination }}</em>
         <em>{{ result.ride_comment }}</em>
     {% endif %}
{% endfor %}
{%for result in result\ u list%}
{%if结果%}
{{result.add_source}}
{{result.add_destination}
{{result.ride_comment}
{%endif%}
{%endfor%}
我得到以下错误

TemplateSyntaxError位于/rides/search/

无法分析“userList[result.pk]”中的其余部分:“[result.pk]”


您应该为此编写django自定义筛选器

在应用程序中创建文件名get_dict_val.py

project
   -app
      -templatetags
          __init__.py
          get_dict_val.py
现在进入“获取目录”页

@register.filter
def get_item(dictionary, key):
    return dictionary.get(key)
模板中 将此添加为第一行写入

{% load get_dict_val %}
现在替换模板中的代码

<a href="/rides/ridedetails/{{ result.pk }}">{{ userList|get_item:result.pk }}</a>

您不需要创建字典就可以在模板级别访问驱动程序,因为
Driver
model具有
Ride
model的外键:

{% for result in result_list %}
     {% if result %}
         {% with result.driver_set.all as drivers %}
             {% for driver in drivers %}
                 <a href="/rides/ridedetails/{{ result.pk }}">{{ driver.user_id }}</a>
             {% endfor %}
         {% endwith %}
         <em>{{ result.add_source }}</em>
         <em>{{ result.add_destination }}</em>
         <em>{{ result.ride_comment }}</em>
     {% endif %}
{% endfor %}
然后你可以做:

ride = Ride.objects.get(id='some_id')
drivers = ride.drivers.all()
ride_id = models.ForeignKey(Ride, related_name='drivers')
ride = Ride.objects.get(id='some_id')
drivers = ride.drivers.all()