![](/img/trans.png)
[英]How to get model field value from model and field in django template?
[英]How to get field data from model?
假設我有一個名為app的Django應用程序。 在其中我有一個在models.py中定義的模型類命名數據。 另外,我在模板目錄中有一個html文件,其中有幾個選項列表,應該使用模型的字段填充,例如類型,日期。 我需要做的是獲取views.py中的字段列表,並用它們填充選項列表。 另一件事是,在用戶通過選擇選項列表中的值提交查詢后,我將向他們顯示一個表格,顯示模型中所有字段的值。 所以基本上我必須檢索用戶輸入的內容,並通過輸入進行查詢,並根據查詢獲取模型中所有字段的數據。 我們可以命名另外兩個字段時間,值。 這些事情應該主要在views.py中完成。
以下是hmtl文件中的選項列表:
<form action="" method="post">
<select name="type" values="type_data"></select>
<select name="date" values="date_data"></select>
<input type="submit" value="Submit">
</form>
我試過的兩件事是:
1.要獲取數據以填充選項列表,我使用了:
objects= data.objects.all()
type_data=getattr(objects, 'type')
date_data=getattr(objects, 'date')
2.在查詢后獲取數據,我使用:
if request.method == 'POST':
…
mytype = '% r' % request.POST.get['type']
mydate = ' %r ' % request.POST.get['date']
objects2= data.objects2.filter(type=mytype,date=mydate)
time=getattr(objects2, 'time')
value=getattr(objects2, 'value')
這是行不通的。 我正在引用這個鏈接django對象獲取/設置字段所以我基本上使用它從模型中獲取字段數據: getattr(obj, 'field_name')
有什么想法嗎? 我感謝任何幫助
看看Django的Form功能 - 特別是ModelChoiceField - 它解決了這個問題。
如果你想內省模型以查看它有哪些字段,請查看model._meta.fields
。
例如,以下代碼打印出模型實例instance
上每個字段的值:
for field in instance._meta.fields:
print field.attname, '=', getattr(model, field.attname)
您的objects
變量是一個QuerySet,當物化時是一個“對象列表”,因此要獲取對象屬性列表,您應該迭代它們:
objects = data.objects.all()
type_data = []
date_date = []
for obj in objects:
type_data.append(obj.type)
date_date.append(obj.date)
但我想你下拉列表真正需要的是每個值都有一個id(但我可能錯了):
for obj in objects:
type_data.append((obj.pk, obj.type))
date_date.append((obj.pk, obj.date))
這將創建一個元組列表:
[(1, 'value1'), (2, 'value2')...]
所以在模板中你可以使用:
<select name="type">
{% for value, name in type_data %}
<option value="{{ value }}">{{ name }}</option>
{% endfor %}
</select>
但請記住,django可以簡化這個過程 - 閱讀表格。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.