首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法从模型的(数据库)中提取数据

无法从模型的(数据库)中提取数据
EN

Stack Overflow用户
提问于 2019-05-10 18:57:02
回答 1查看 38关注 0票数 0

我正在建立一个合法的合规网络应用程序,包括之间的关系,条目等。我有不同的模型,是Company_Masters,Location_Masters,部门,雇用和Comp_Info。在我的索引页面上,我想列出所有的合规性,并想要创建,更新和编辑它们。但我不知道如何使用所有的模型

代码语言:javascript
复制
#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`

所以基本上我无法从这些模型(数据库)中提取数据。

EN

回答 1

Stack Overflow用户

发布于 2019-05-19 18:20:30

基本上,不要使用zip并在您的上下文中定义每一个:

代码语言:javascript
复制
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作为示例从其中访问其他每个字典。这不是理想的解决方案,但如果不知道你想要实现什么,我们可以试着让你实现目标。

在您的模板中,您将更改为:

代码语言:javascript
复制
{% 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记录,您将使用指向deptLocation_MastersCompany_MastersForeignKey来获取正确关联的记录。类似于emplo.objects.select_related('dept', 'Location_Masters', 'Company_Masters').all()的东西,但这意味着所有的外键都在emplo中(再次猜测您的模型)

注意:您应该考虑阅读有关在python/django中正确命名的内容-您的模型类应该全部大写,并且在名称中不使用下划线-同时,最好显式地命名您的类和变量名称,以便下一个阅读您代码的人将理解您试图实现的目标。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56076248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档