>

장고 쿼리 에 대해 길게 읽었습니다.

그러나 django forward  검색어 및 backwards  쿼리 원하는 것을 얻을 수 없습니다.

전달 쿼리를 작성했습니다 :

ATUFS =  TSFH.objects.filter(FKToUser=request.user).values('sB','sE')

이것은 다음을 반환합니다 :

{'sB': datetime.datetime(2019, 5, 21, 18, 14, 2, 691185, tzinfo=<UTC>), 'sE': datetime.datetime(2019, 5, 21, 18, 16, 2, 532731, tzinfo=<UTC>)}

그러나이 쿼리에는 TSF.FKToT 를 보장하는 쿼리도 필요합니다.  다른 테이블 T 에 FK  내 스크립트 ed = request.GET.get('d', '') 의 로컬 변수와 일치합니다. . 본질적 으로이 절에서 T.dNm = ed 를 달성하려고합니다.  . 나는 django forward query에서 이것을 달성하는 방법을 혼동했다.

나는 거꾸로 쿼리를 작성했다 : 와이즈 비즈

이것은 ATFUS = TSF.objects.filter(FKToTld__dNm='123.123.13.1').values('sB','sE ') 라는 오류를 반환합니다. 및 sB  값이 sE 에 없으므로 값을 반환 할 수 없습니다.  표.

정규 TSF 에서  나는 단순히 달성하려고 노력하고있다

SQL

SELECT sB, sE FROM TSF, TSFH,T where TSFH.id=TSF.FKToTSFH_id and T.id=tsf.FKToT_id; 를 통해 내가하려는 일을 어떻게 달성 할 수 있을까 ?

감사합니다

업데이트 된보기/템플릿

Django orm

빈 출력 문제가 있습니다.

해결 방법에 대한 모든 생각.

Completed=TSF.objects.filter(FKToT__FKToUser=request.user,FKToTSFH__sE__isnull=False).values('FKToTSFH__sB','FKToTSFH__sE') return render(request, 'view.html', { 'C':Completed }) {% if C %} {% for res in C %} <li><span>{{ res.FKToTSFH.sB }}</span></li> {% endfor %}
  • 답변 # 1

    ( sB 와 같이) 이렇게 시도해 볼 수 있습니다  abd sE   TSFH 에 있습니다  모델이므로 FKToTSFH__ 를 넣어야합니다.   sB 전에  그리고 sE  다음과 같이) :

    TSF.objects.filter(FKToTld__dNm='123.123.13.1').values('FKToTSFH__sB','FKToTSFH__sE')
    # with user
    TSF.objects.filter(FKToTld__FKToUser=request.user).values('FKToTSFH__sB','FKToTSFH__sE')  # make sure user is authenticated
    
    
    이 결과를 얻는 더 복잡한 방법은 sE 의 가치에 주석을 달아주는 것입니다.  그리고 sB  다음과 같이 쿼리 셋에 추가하십시오.

    from django.db.models import F
    TSF.objects.filter(FKToTld__dNm='123.123.13.1').annotate(sB=F('TSFH__sB'), sE=F('FKToTSFH__sE')).values('sB','sE')
    
    
    사용법
    for item in TSF.objects.filter(FKToTld__dNm='123.123.13.1'):
         print(item.FKToTSFH.sB)
         print(item.FKToTSFH.sE)
    for item in TSF.objects.filter(FKToTld__dNm='123.123.13.1').values('FKToTSFH__sB', 'FKToTSFH__sE'):
      print(item.get('FKToTSFH__sB'))
      print(item.get('FKToTSFH__sE'))
    for (sB, sE) in TSF.objects.filter(FKToTld__dNm='123.123.13.1').values_list('FKToTSFH__sB', 'FKToTSFH__sE'):
      print(sB)
      print(sE)
    
    
    업데이트 2 :

    isnull 를 사용할 수 있습니다  null 값이 있는지 확인하는 방법 :

    # view
    queryset = TSF.objects.filter(FKToTld__dNm='123.123.13.1', FKToTSFH__sB__isnull=False)
    return ('template.html', context={'tsf': queryset})
    # template
    {% for i in tsf %}
        {{ i.FKToTSFH.sB }}
    {% endfor %}
    
    

관련 자료

  • 이전 c# - 캔트 두 숫자 사이의 백분율 차이 계산
  • 다음 java - MongoDb에서 Jackson을 사용하여 날짜 필드를 ISODate ()로 저장하는 방법