У меня есть определение представления, которое (пытается к) производит модель как таблицу. Это - то, что я имею до сих пор:
def output_table(request):
output = My_Model()
return render_to_response('outputtable.html', {'output': output})
Вот HTML для outputtable.html:
<html>
<table>
{{ output.as_table }}
</table>
</html>
Что я делаю неправильно?Это не работает. Теперь, это передает модель правильно, потому что, если я изменяюсь My_Model()
кому: My_Model.objects.all()
и затем вывод это как просто {{ output }}
затем это показывает мне, что я видел бы в оболочке Django.
Если вы просто хотите вывести одну конкретную модель, измените свой шаблон на что-то вроде
<tr>
<td>Name:</td>
<td>{{ output.name}}</td>
</tr>
для всех полей, которые вас интересуют. Если это то, что вы хотите сделать для любой произвольной модели в своем приложении, взгляните на этот фрагмент . Это предоставит вам коллекцию полей для цикла.
Нет метода as_table
в экземпляре модели ( MyModel ()
) или в наборах запросов ( MyModel.objects.all ()
). Возможно, вы видели as_table
как метод форм as_table
. У вас там нет формы.
Если вы хотите распечатать экземпляр модели / набор запросов в виде таблицы, вам придется спроектировать ее самостоятельно.
Итак, вам нужно сделать следующее:
1) добавить
из django.forms import ModelForm
в ваши модели. py
2) добавьте
class My_Model_Form(ModelForm):
class Meta:
model = My_Model
3) в свой views.py измените output = My_Model ()
на output = My_Model_Form ()
Теперь все готово. Итак, уловка состоит в том, чтобы унаследовать вашу форму от исходной модели.