亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

迭代模板中的模型實例字段名稱和值

迭代模板中的模型實例字段名稱和值

一只甜甜圈 2019-08-09 16:02:33
迭代模板中的模型實例字段名稱和值我正在嘗試創建一個基本模板來顯示所選實例的字段值及其名稱??梢詫⑵湟暈楸砀窀袷街性搶嵗档臉藴瘦敵?,其中第一列中的字段名稱(特別是如果在字段上指定了verbose_name)和第二列中該字段的值。例如,假設我們有以下模型定義:class Client(Model):     name = CharField(max_length=150)     email = EmailField(max_length=100, verbose_name="E-mail")我希望它在模板中輸出如此(假設具有給定值的實例):Field Name      Field Value----------      -----------Name            Wayne KoortsE-mail          [email protected]我想要實現的是能夠將模型的實例傳遞給模板,并能夠在模板中動態迭代它,如下所示:<table>     {% for field in fields %}         <tr>             <td>{{ field.name }}</td>             <td>{{ field.value }}</td>         </tr>     {% endfor %}</table>是否有一個整潔,“Django批準”的方式來做到這一點?這似乎是一項非常常見的任務,我需要經常為這個特定的項目做這件事。
查看完整描述

3 回答

?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

您可以使用Django的to-python queryset序列化程序。

只需在您的視圖中輸入以下代碼:

from django.core import serializers
data = serializers.serialize( "python", SomeModel.objects.all() )

然后在模板中:

{% for instance in data %}
    {% for field, value in instance.fields.items %}
        {{ field }}: {{ value }}
    {% endfor %}{% endfor %}

它的巨大優勢在于它處理關系字段。

對于字段子集,請嘗試:

data = serializers.serialize('python', SomeModel.objects.all(), fields=('name','size'))


查看完整回答
反對 回復 2019-08-09
?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

最后在dev郵件列表上找到了一個很好的解決方案:

在視圖中添加:

from django.forms.models import model_to_dictdef show(request, object_id):
    object = FooForm(data=model_to_dict(Foo.objects.get(pk=object_id)))
    return render_to_response('foo/foo_detail.html', {'object': object})

在模板中添加:

{% for field in object %}
    <li><b>{{ field.label }}:</b> {{ field.data }}</li>{% endfor %}


查看完整回答
反對 回復 2019-08-09
  • 3 回答
  • 0 關注
  • 848 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號