Business
m2m 필드에 분기가있는 모델이 있습니다. 일부 기업은 가지가없는 지점이 있습니다.m2m 필드에서 하나의 객체가있는 객체의 목록을 얻으려면
class Business(models.Model):
order = models.IntegerField()
branches = models.ManyToManyField('self')
와 나는 목록을 얻으려면 체인에서 하나의 (위) 지점과 기업 (order
필드에 의해) 주문 (사업이 지점이있는 경우).
예를 들어 보자는 첫 글자가 체인에 속하는 의미, 그리고 수는 정렬 순서를 의미
AA-0
AB-1
AC-2
AD-3
B-4
C-5
D-6
E-7
FA-8
FB-9
FC-10
A...
및 F...
객체는 지점을 가지고, B
, C
, E
및 D
하지 않습니다.
내가 얻고 싶은 목록입니다 : 내가 한 가지를 제외하고 최종 목록에서 모든 비즈니스의 모든 지점을 제외 할 즉
AA, B, C, D, E, FA
. 목록에 사업장이 있어야하지만 지점이 없어야합니다. 나는 이중 루프 그것을 어떻게
:
object_list = Business.objects.all().order_by('order')
object_list_no_branches = []
for obj in object_list:
found = False
for obj_inner in object_list_no_branches:
found = obj_inner.branches.filter(pk=obj.pk).exists()
if found:
break
if not found:
object_list_no_branches.append(obj)
그러나 분명히이 루프는 내가 필요로하는 기술이 아니다.
Django ORM 또는 PostgreSQL으로 할 수 있습니까?
AA-0, AB-1 등이란 무엇입니까? 주문은 정수 필드이며이 형식을 지원하지 않습니다. – Tico
실제 비즈니스 오브젝트의 간단한 표현. 첫 번째 문자는 체인에 속하는 것을 의미하며 숫자는 정렬 순서를 의미합니다. 제가 의미하는 바를 보여주는 모델 일뿐입니다. – Ilya
그래서 하나의 비즈니스 객체가 주어진다면, 당신은 그것을 쿼리하기를 원한다. 이 올바른지? – Tico