You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django模板中访问模型存储的字典对象属性?

解决方法

直接用TextField存字典的话,你在模板里写{{ things_object.car.color }}是取不到值的——因为TextField存的是序列化后的字符串,不是字典对象,字符串本身没有color属性。

下面给你两种可行的方案:

方案一:用JSONField(推荐)

Django 3.1及以上版本自带JSONField,能自动处理字典的序列化和反序列化,用法最简单:

模型定义

from django.db import models

class Things(models.Model):
    car = models.JSONField()
    # 其他字段...

存储字典

直接把字典赋值给字段即可,无需手动序列化:

car = {'color': 'red', 'doors': 4}
Things.objects.create(car=car)

模板访问

这时候你原本的写法就能正常生效:

Car color: {{ things_object.car.color }}
Car doors: {{ things_object.car.doors }}

方案二:继续用TextField(手动处理序列化)

如果非要保留TextField,就得自己负责字典与字符串的转换:

模型定义

from django.db import models
import json

class Things(models.Model):
    car = models.TextField()
    # 其他字段...

    @property
    def car_dict(self):
        # 将存储的字符串转换为字典
        return json.loads(self.car)

存储字典

存储时需要先把字典转为JSON字符串:

import json
car = {'color': 'red', 'doors': 4}
Things.objects.create(car=json.dumps(car))

模板访问

通过自定义的car_dict属性来访问字典内容:

Car color: {{ things_object.car_dict.color }}

内容的提问来源于stack exchange,提问作者Brian Risk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 07:17:02