서로 다른 애플리케이션 / 모델의 두 쿼리를 결합하여 단일 개요 페이지에 표시

Bas Jansen

저는 최근에야 Django로 작업을 시작했고 다른 애플리케이션 / 모델의 두 쿼리를 결합하여 주어진 개요 페이지에 표시하는 방법이 궁금합니다. 내가하려는 작업을 설명하기 위해 아래에 비 기능적 의사 코드를 표시하겠습니다.

Index.html

context_object_names내가하려는 작업을 설명하기 위해 여기 에 두 개의 개별 항목을 추가했습니다 ( latest_newslatest_enzyme)

{% extends 'base.html' %}

{% block body %}

<div id="docs-content">
  <div class="section" id="s-module-django.db.models.fields">
    <div class="page-header text-primary">
      <h3 class="info-header-blue-publication-small">Overview</h3>
    </div>
    <div>
      <h3 class="info-header-blue-publication-tiny">Latest news:</h3>
    </div>
    {% if latest_news %}
      {{ latest_news.news_text }}
    {% else %}
      <p>No recent news.</p>
    {% endif %}

    <div>
      <h3 class="info-header-blue-publication-tiny">Latest enzyme:</h3>
    </div>
    {% if latest_enzyme %}
      <ul>
        <li><a href="{% url 'gts:detail' latest_enzyme.id %}">{{ latest_enzyme.barcode  }}</a></li>
      </ul>
    {% else %}
      <p>No enzymes are available.</p>
    {% endif %}

  </div>
</div>

{% endblock %}

Views.py

여기에는 내가 시도했지만 작동하지 않은 방법을 설명하는 주석 처리 된 줄과 get_querysets내 의도를 설명하기 위해 별도의 두 줄이 포함되어 있습니다 .

from django.shortcuts import render from django.http import
HttpResponse from django.views import generic

from gts.models import Enzymes 
from news.models import News

# Create your views here.

class IndexView(generic.ListView):
    template_name = 'overview/index.html'

    #context_object_name = 'latest_enzyme_news'
    #def get_queryset(self):
    #    latest_enzyme = Enzymes.objects.order_by('-pub_date')[0]
    #    latest_news = News.objects.order_by('-pub_date')[0]
    #    return (latest_enzyme, latest_news)

    context_object_name = 'latest_enzyme'
    def get_queryset(self):
        return Enzymes.objects.order_by('-pub_date')[0]

    context_object_name = 'latest_news'
    def get_queryset(self):
        return News.objects.order_by('-pub_date')[0]

동일한 응용 프로그램의 여러 모델 ( 예 : 게시 된 날짜에 따라 동일한 페이지에 다른 모델의 개체 표시) 에서 여러 쿼리를 결합하려고 시도한 유사한 질문을 살펴 보았지만 어떤 힌트 나 팁을 주시면 감사하겠습니다. 다른 응용 프로그램의 쿼리를 더 자주 결합하고자하는 상황에 대한 '모범 사례'입니다.

다니엘 로즈 맨

여기에 ListView가 전혀 필요하지 않습니다. 당신은 물건을 나열하는 것이 아닙니다. 두 개의 개별 항목이 표시됩니다.

대신 표준 TemplateView를 사용하고 get_context_data원하는 특정 항목을 반환하도록 정의 하십시오.

class IndexView(generic.TemplateView):
    template_name = 'overview/index.html'

    def get_context_data(self):
        latest_enzyme = Enzymes.objects.order_by('-pub_date')[0]
        latest_news = News.objects.order_by('-pub_date')[0]
        return {'latest_enzyme': latest_enzyme, 'latest_news': latest_news}

(또한 실제로 클래스에서 값을 얻지 못하기 때문에 함수 기반 뷰를 쉽게 사용할 수 있습니다.)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Angularjs-두 개의 다른 링크를 동일한 페이지로 리디렉션하지만 angularjs에서 다른 데이터를 표시하는 방법

분류에서Dev

단일 앱에서 두 개의 서로 다른 Firebase 애플리케이션의 알림 및 데이터베이스

분류에서Dev

두 개의 쿼리를 병합하여 MySQL에서 단일 결과 얻기

분류에서Dev

단일 페이지에서 두 개의 ajax 호출을 처리하여 다른 페이지의 Highcharts로 데이터를 가져옵니다.

분류에서Dev

Eclipse에서 항상 동일한 애플리케이션의 출력을 표시하도록 두 개의 콘솔보기를 구성 할 수 있습니까?

분류에서Dev

두 개의 다른 테이블에서 결과를 가져 와서 단일 결과로 표시

분류에서Dev

단일 페이지 애플리케이션에서 다른 페이지로 이동할 때 표시되는 고정 헤더

분류에서Dev

C # wpf 애플리케이션에서 두 개의 xml 요청

분류에서Dev

한 번의 클릭으로 두 개의 애플리케이션을여 시나요?

분류에서Dev

단일 스레드 Java 애플리케이션은 70 개 이상의 스레드를 시작합니다.

분류에서Dev

동일한 프로세스에서 실행되는 두 개의 다른 애플리케이션에 대한 MassTransit In 메모리 설정

분류에서Dev

Android의 다른 애플리케이션에서 한 애플리케이션의 주요 활동을 시작하는 방법

분류에서Dev

Extjs Store는 애플리케이션 새로 고침 직후에 0 개의 레코드를 표시합니다.

분류에서Dev

두 개의 다른 모델이 관리자 페이지 django에서 동일한 이름을가집니다.

분류에서Dev

string. Linq 쿼리를 결합하여 배열에서 두 개의 문자열을 병합하고 단일 쉼표로 구분 된 문자열로 출력

분류에서Dev

Android Studio는 동일한 프로젝트에 대해 동시에 두 개의 애플리케이션을 빌드합니다.

분류에서Dev

두 개의 서로 다른 Websphere 8 프로필 공유 세션에 동일한 애플리케이션이 배포 되었습니까?

분류에서Dev

스크롤없이 모바일 웹 애플리케이션에서 웹 페이지를 시작하는 방법

분류에서Dev

단일 코어 시스템의 모든 스레드를 차단하는 다중 스레드 애플리케이션 양식 C #에서 while 루프로 잠금

분류에서Dev

nginx의 동일한 IP에서 다른 도메인으로 두 개의 다른 django-cms 애플리케이션 실행

분류에서Dev

두 개의 업데이트 쿼리를 단일 케이스 MySQL로 결합

분류에서Dev

두 개의 스프링 애플리케이션, 둘 다 특정 jar 및 애플리케이션 컨텍스트를 사용합니다. 컨텍스트에서 Bean을 가져 오는 애플리케이션을 어떻게 제어합니까?

분류에서Dev

동일한 코드베이스를 사용하지만 프로필이 다른 동일한 컨테이너에서 실행되는 두 개의 스프링 부트 애플리케이션을 원격 디버그하는 방법은 무엇입니까?

분류에서Dev

Android Manifest에서 두 개의 서로 다른 애플리케이션을 선언하거나 하나의 애플리케이션 클래스로 병합하는 방법

분류에서Dev

스타일 시트를 C # WPF 애플리케이션의 로컬 HTML 페이지에 연결

분류에서Dev

Android에서 서로 다른 두 애플리케이션 간의 공유 요소 전환?

분류에서Dev

flutter 애플리케이션의 firebase 인증에서 두 개의 uid를 병합합니다.

분류에서Dev

동일한 애플리케이션에서 두 개의 Tomcat 서버를 실행하면 MBean 등록에 실패합니다.

분류에서Dev

MySQL에서 두 쿼리를 결합하여 한 쿼리의 결과를 다른 쿼리와 매핑합니다.

Related 관련 기사

  1. 1

    Angularjs-두 개의 다른 링크를 동일한 페이지로 리디렉션하지만 angularjs에서 다른 데이터를 표시하는 방법

  2. 2

    단일 앱에서 두 개의 서로 다른 Firebase 애플리케이션의 알림 및 데이터베이스

  3. 3

    두 개의 쿼리를 병합하여 MySQL에서 단일 결과 얻기

  4. 4

    단일 페이지에서 두 개의 ajax 호출을 처리하여 다른 페이지의 Highcharts로 데이터를 가져옵니다.

  5. 5

    Eclipse에서 항상 동일한 애플리케이션의 출력을 표시하도록 두 개의 콘솔보기를 구성 할 수 있습니까?

  6. 6

    두 개의 다른 테이블에서 결과를 가져 와서 단일 결과로 표시

  7. 7

    단일 페이지 애플리케이션에서 다른 페이지로 이동할 때 표시되는 고정 헤더

  8. 8

    C # wpf 애플리케이션에서 두 개의 xml 요청

  9. 9

    한 번의 클릭으로 두 개의 애플리케이션을여 시나요?

  10. 10

    단일 스레드 Java 애플리케이션은 70 개 이상의 스레드를 시작합니다.

  11. 11

    동일한 프로세스에서 실행되는 두 개의 다른 애플리케이션에 대한 MassTransit In 메모리 설정

  12. 12

    Android의 다른 애플리케이션에서 한 애플리케이션의 주요 활동을 시작하는 방법

  13. 13

    Extjs Store는 애플리케이션 새로 고침 직후에 0 개의 레코드를 표시합니다.

  14. 14

    두 개의 다른 모델이 관리자 페이지 django에서 동일한 이름을가집니다.

  15. 15

    string. Linq 쿼리를 결합하여 배열에서 두 개의 문자열을 병합하고 단일 쉼표로 구분 된 문자열로 출력

  16. 16

    Android Studio는 동일한 프로젝트에 대해 동시에 두 개의 애플리케이션을 빌드합니다.

  17. 17

    두 개의 서로 다른 Websphere 8 프로필 공유 세션에 동일한 애플리케이션이 배포 되었습니까?

  18. 18

    스크롤없이 모바일 웹 애플리케이션에서 웹 페이지를 시작하는 방법

  19. 19

    단일 코어 시스템의 모든 스레드를 차단하는 다중 스레드 애플리케이션 양식 C #에서 while 루프로 잠금

  20. 20

    nginx의 동일한 IP에서 다른 도메인으로 두 개의 다른 django-cms 애플리케이션 실행

  21. 21

    두 개의 업데이트 쿼리를 단일 케이스 MySQL로 결합

  22. 22

    두 개의 스프링 애플리케이션, 둘 다 특정 jar 및 애플리케이션 컨텍스트를 사용합니다. 컨텍스트에서 Bean을 가져 오는 애플리케이션을 어떻게 제어합니까?

  23. 23

    동일한 코드베이스를 사용하지만 프로필이 다른 동일한 컨테이너에서 실행되는 두 개의 스프링 부트 애플리케이션을 원격 디버그하는 방법은 무엇입니까?

  24. 24

    Android Manifest에서 두 개의 서로 다른 애플리케이션을 선언하거나 하나의 애플리케이션 클래스로 병합하는 방법

  25. 25

    스타일 시트를 C # WPF 애플리케이션의 로컬 HTML 페이지에 연결

  26. 26

    Android에서 서로 다른 두 애플리케이션 간의 공유 요소 전환?

  27. 27

    flutter 애플리케이션의 firebase 인증에서 두 개의 uid를 병합합니다.

  28. 28

    동일한 애플리케이션에서 두 개의 Tomcat 서버를 실행하면 MBean 등록에 실패합니다.

  29. 29

    MySQL에서 두 쿼리를 결합하여 한 쿼리의 결과를 다른 쿼리와 매핑합니다.

뜨겁다태그

보관