簡體   English   中英

如何從模型中獲取現場數據?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM