Django Счетчик пересечений "многие ко многим

Я пытаюсь найти MaunelItemGroups, которые имеют более N одинаковых M2M элементов, как определенная AutoItemGroup

class Item(models.model):
    info = models.CharField(null=False, max_length=20)

class AutoItemGroup(models.model):
    items =  models.ManyToManyField(Item, blank=True)

class ManuelItemGroup(models.model):
    items = models.ManyToManyField(Item, blank=True)

auto_group = AutoItemGroup.objects.all().first()
# find manuel group that has more than N of the same M2M items as above auto_group

Помогите пожалуйста, это интенсивное сравнение M2M пересечений между 2 моделями, каждая из которых имеет M2M поле с одной и той же моделью (Item).

for item in Item.objects.all():
    if item.manuelitemgroup_set.all().count() > item.autoitemgroup_set.count():
        print(f"{item} has more Manus than Autos")

Это покажет для каждого элемента, больше ли у него манусов, чем авто. Я все еще не уверен на 100%, что это то, чего вы пытаетесь достичь. Похоже, вы немного запутались в том, как работают отношения m2m, я бы рекомендовал вам найти время, чтобы посмотреть это.

Вернуться на верх