89👍
✅
The easiest way is to use a for loop template tag.
Given the view:
def MyView(request):
...
query_results = YourModel.objects.all()
...
#return a response to your template and add query_results to the context
You can add a snippet like this your template…
<table>
<tr>
<th>Field 1</th>
...
<th>Field N</th>
</tr>
{% for item in query_results %}
<tr>
<td>{{ item.field1 }}</td>
...
<td>{{ item.fieldN }}</td>
</tr>
{% endfor %}
</table>
This is all covered in Part 3 of the Django tutorial. And here’s Part 1 if you need to start there.
23👍
$ pip install django-tables2
settings.py
INSTALLED_APPS , 'django_tables2'
TEMPLATES.OPTIONS.context-processors , 'django.template.context_processors.request'
models.py
class hotel(models.Model):
name = models.CharField(max_length=20)
views.py
from django.shortcuts import render
def people(request):
istekler = hotel.objects.all()
return render(request, 'list.html', locals())
list.html
{# yonetim/templates/list.html #}
{% load render_table from django_tables2 %}
{% load static %}
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="{% static
'ticket/static/css/screen.css' %}" />
</head>
<body>
{% render_table istekler %}
</body>
</html>
- [Django]-Format numbers in django templates
- [Django]-Simple guestbook django: __init__() takes 1 positional argument but 2 were given
- [Django]-How to obtain and/or save the queryset criteria to the DB?
3👍
If you want to table do following steps:-
views.py:
def view_info(request):
objs=Model_name.objects.all()
............
return render(request,'template_name',{'objs':obj})
.html page
{% for item in objs %}
<tr>
<td>{{ item.field1 }}</td>
<td>{{ item.field2 }}</td>
<td>{{ item.field3 }}</td>
<td>{{ item.field4 }}</td>
</tr>
{% endfor %}
- [Django]-Add custom form fields that are not part of the model (Django)
- [Django]-Django-social-auth django-registration and django-profiles — together
- [Django]-Is there something similar to 'rake routes' in django?
1👍
The answers in this thread rely on manually feeding column names, and I prefer to have some way of viewing a Django model completely by default. I have cooked up the solution below:
views.py
from django.shortcuts import render
from .models import TABLEOFINTEREST
def TABLEOFINTEREST(request):
MODEL_HEADERS=[f.name for f in TABLEOFINTEREST._meta.get_fields()]
query_results = [list(i.values()) for i in list(TABLEOFINTEREST.objects.all().values())]
#return a response to your template and add query_results to the context
return render(request, "/TABLEOFINTEREST.html", {
"query_results" : query_results,
"model_headers" : MODEL_HEADERS
})
TABLEOFINTEREST.html:
<table>
<tr>
{% for item in model_headers %}
<th>{{ item }}</th>
{% endfor %}
</tr>
{% for all_rows in query_results %}
<tr>
{% for every_column in all_rows %}
<td>{{ every_column }}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
urls.py
from django.urls import path
from . import views
urlpatterns = [
path("TABLEOFINTEREST", views.TABLEOFINTEREST, name="TABLEOFINTEREST")
]
Tested and validated on my machine with multiple tables.
- [Django]-What is the default order of a list returned from a Django filter call?
- [Django]-Django, query filtering from model method
- [Django]-Cron and virtualenv
Source:stackexchange.com