Business
m2mフィールドのブランチが保持されます。一部の企業ではないブランチがあります。m2mフィールドから1つのオブジェクトを持つオブジェクトのリストを取得すると、
class Business(models.Model):
order = models.IntegerField()
branches = models.ManyToManyField('self')
そして、私は(ビジネスが支店を持っている場合)チェーンからわずか1(上)支店で注文(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
にはありません。
私が取得したいリストは、次のとおりです。私は1つのブランチを除いて、最終的なリストから任意の事業の全ての枝を除外したい言い換えれば
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などとは何か? Orderは整数フィールドであり、この形式をサポートしていません。 – Tico
実ビジネスオブジェクトの単純な表現。最初の文字はチェーンに属することを意味し、数字はソート順を意味します。それは私が何を意味するかを示す単なるモデルです。 – Ilya
したがって、1つのビジネスオブジェクトを指定すると、それを照会する必要があり、それらの要件を満たすブランチが返されます。これは正しいです? – Tico