programing

각 행에 대한 특정 필드가 있는 모든 행의 쿼리 집합을 얻는 방법은 무엇입니까?

batch 2023. 7. 20. 21:49
반응형

각 행에 대한 특정 필드가 있는 모든 행의 쿼리 집합을 얻는 방법은 무엇입니까?

나는 모델이 있습니다.Employees모든 행에 대한 쿼리 세트를 갖고 싶지만 모든 필드가 아닌 각 행의 특정 필드를 가지고 싶습니다.

테이블/모델에서 모든 행을 쿼리하는 방법을 알고 있습니다.

Employees.objects.all()

각 Queryset 요소의 필드를 선택하는 방법을 알고 싶습니다.내가 어떻게 그럴 수 있을까?

Employees.objects.values_list('eng_name', flat=True)

그러면 모든 것이 평평한 목록이 생성됩니다.eng_name행당 두 개 이상의 필드를 원하는 경우 플랫 목록을 수행할 수 없습니다. 이렇게 하면 튜플 목록이 만들어집니다.

Employees.objects.values_list('eng_name', 'rank')

에 더하여values_list Daniel이 언급했듯이 (또는 반대의 효과를 위해) id와 지정된 필드만 있는 객체의 쿼리 집합을 가져올 수도 있습니다.

Employees.objects.only('eng_name')

단일 쿼리가 실행됩니다.

SELECT id, eng_name FROM employees

값 대신 필수 필드를 선택할 수 있습니다.

Employee.objects.all().values('eng_name','rank')

다니엘의 대답은 정확합니다.둘 이상의 필드를 쿼리하려면 다음을 수행합니다.

Employee.objects.values_list('eng_name','rank')

튜플 목록이 반환됩니다.named=은(는) 사용할 수 없습니다.둘 이상의 필드를 쿼리할 때 ture입니다.

또한 해당 정보를 가진 필드가 하나만 존재하고 pkid를 알고 있는 경우 다음을 수행합니다.

Employee.objects.values_list('eng_name','rank').get(pk=1)

Oscar Persson의 답변은 데이터를 컨텍스트에 더 쉽게 전달하고 일반적인 값 목록 대신 객체 인스턴스(소품을 얻기 쉽게)를 가져올 때 템플릿에서 정상적으로 처리할 수 있도록 하기 때문에 이를 처리하는 가장 좋은 방법입니다.

그런 다음 원하는 소품을 쉽게 구할 수 있습니다.

for employee in employees:
    print(employee.eng_name)

또는 템플릿에서:

{% for employee in employees %}

    <p>{{ employee.eng_name }}</p>

{% endfor %}

values_list를 필터와 함께 사용할 수 있습니다.

active_emps_first_name = Employees.objects.filter(active=True).values_list('first_name',flat=True)

자세한 내용은 여기를 참조하십시오.

Employees.objects.filter().only('eng_name')

지정된 필드만 있는 모든 행의 쿼리 집합을 제공합니다.위의 다른 답변과 같은 목록을 제공하지 않습니다.개체 인스턴스를 제공합니다.조심하세요; 그것은 물체입니다.filter().only() 객체만이 아닙니다. only()

SQL 쿼리와 유사합니다.

SELECT eng_name FROM Employees;
queryset = ModelName.objects.filter().only('field1', 'field2')

언급URL : https://stackoverflow.com/questions/7503241/how-to-obtain-a-queryset-of-all-rows-with-specific-fields-for-each-one-of-them

반응형