我有两个模型:模式和类别。
模式有许多领域categories = models.ManyToManyField(Category, related_name='patterns')
我的视图从表单中获取类别的查询集。我需要使用这些类别标记所有模式,并从每个模式的categories
字段中删除这些类别。
现在我按照以下方式进行:
patterns_to_remove_category = Pattern.objects.all()
for category in categories:
patterns_to_remove_category = patterns_to_remove_category.filter(categories=category)
for pattern in patterns_to_remove_category:
pattern.categories = pattern.categories.exclude(pk__in=[c.pk for c in categories])
但我想尽量减少数据库的点击次数。最好的方法是什么?
答案 0 :(得分:0)
我建议您使用隐式through
模型,并执行以下查询:
Pattern.categories.through.objects.filter(category__in=categories).delete()