我正在建立一个合法的合规网络应用程序,包括之间的关系,条目等。我有不同的模型,是Company_Masters,Location_Masters,部门,雇用和Comp_Info。在我的索引页面上,我想列出所有的合规性,并想要创建,更新和编辑它们。但我不知道如何使用所有的模型
#view.py
from django.shortcuts import render
from django.views.generic import ListView
from .models import Company_Masters, Location_Masters,dept, emplo, Comp_Info
def home(request):
mylist = zip(Company_Masters.objects.all(), Location_Masters.objects.all() , dept.objects.all(), emplo.objects.all())
context = {
'mylist': mylist
}
return render(request,'compliance/home.html',context)
class PostListView(ListView):
model = Company_Masters
model = Location_Masters
model = dept
model = emplo
model = Comp_Info
template_name = 'compliance/home.html'
context_object_name = 'mylist'
def about(request):
return render(request,'compliance/about.html')
URLS.PY
#urls.py
from django.urls import path
from .views import PostListView
from . import views
urlpatterns = [
path('', PostListView.as_view(), name='compliance-home'),
path('about/', views.about, name='compliance-about')
]
HOME.HTML
{% extends "compliance/base.html" %}
{% block content %}
{% for comp,loc,dept,emp in mylist %}
<article class="media content-section">
<div class="media-body">
<div class="article-metadata">
<a class="mr-2" href="#">COMPLIANCE 1</a>
<small class="text-muted">DATE EXPIRY</small>
</div>
<p class="article-content"> COMPANY ID: {{ comp.comp_id }}</p>
<p class="article-content">COMPANY NAME: {{ comp.comp_name }}</p>
<p class="article-content">LOCATION ID: {{ loc.loc_id}}</p>
<p class="article-content">LOCATION NAME: {{ loc.loc_name}}</p>
<p class="article-content">DEPT ID: {{ dept.dept_id}}</p>
<p class="article-content">DEPT NAME: {{ dept.dept_name}}</p>
<p class="article-content">EMPLOYEE ID: {{ emp.emp_id}}</p>
<p class="article-content">EMPLOYEE NAME: {{ emp.emp_name}}</p>
<!-- <p class="article-content">EMPLOYEE EMAIL: {{ emp.emp_email}}</p> -->
</div>
</article>
{% endfor %}
{% endblock content %}`enter code here`所以基本上我无法从这些模型(数据库)中提取数据。
发布于 2019-05-19 18:20:30
基本上,不要使用zip并在您的上下文中定义每一个:
def home(request):
context = {
'mylist': {
'comp': Company_Masters.objects.all(),
'loc': Location_Masters.objects.all(),
'dept': dept.objects.all(),
'emp': emplo.objects.all()
}
}
return render(request,'compliance/home.html',context)将在您的模板中返回一个字典mylist,您可以使用点符号mylist.comp作为示例从其中访问其他每个字典。这不是理想的解决方案,但如果不知道你想要实现什么,我们可以试着让你实现目标。
在您的模板中,您将更改为:
{% extends "compliance/base.html" %}
{% block content %}
<article class="media content-section">
<div class="media-body">
<div class="article-metadata">
<a class="mr-2" href="#">COMPLIANCE 1</a>
<small class="text-muted">DATE EXPIRY</small>
</div>
{% for comp in mylist.comp %}
<p class="article-content"> COMPANY ID: {{ comp.comp_id }}</p>
<p class="article-content">COMPANY NAME: {{ comp.comp_name }}</p>
{% endfor %}
{% for loc in mylist.loc %}
<p class="article-content">LOCATION ID: {{ loc.loc_id}}</p>
<p class="article-content">LOCATION NAME: {{ loc.loc_name}}</p>
{% endfor %}
{% for dept in mylist.dept %}
<p class="article-content">DEPT ID: {{ dept.dept_id}}</p>
<p class="article-content">DEPT NAME: {{ dept.dept_name}}</p>
{% endfor %}
{% for emp in mylist.emp %}
<p class="article-content">EMPLOYEE ID: {{ emp.emp_id}}</p>
<p class="article-content">EMPLOYEE NAME: {{ emp.emp_name}}</p>
<!-- <p class="article-content">EMPLOYEE EMAIL: {{ emp.emp_email}}</p> -->
{% endfor %}
</div>
</article>
{% endblock content %}但是,我要大胆猜测,这不太可能得到您想要的最终结果-尽管您没有明确表示,我猜,您的目标实际上是将这些表连接到一个结果中。这是一个更大的答案,并且需要您的模型的知识
这意味着,如果您的目标是访问所有emplo记录,您将使用指向dept、Location_Masters和Company_Masters的ForeignKey来获取正确关联的记录。类似于emplo.objects.select_related('dept', 'Location_Masters', 'Company_Masters').all()的东西,但这意味着所有的外键都在emplo中(再次猜测您的模型)
注意:您应该考虑阅读有关在python/django中正确命名的内容-您的模型类应该全部大写,并且在名称中不使用下划线-同时,最好显式地命名您的类和变量名称,以便下一个阅读您代码的人将理解您试图实现的目标。
https://stackoverflow.com/questions/56076248
复制相似问题