如何删除queryset的多对多关系?

时间:2019-04-09 09:01:40

标签: python django many-to-many

我在这样的模型中有很多对很多的关系。

class Shift(models.Model):
    employees = models.ManyToManyField('account.Employee', 
                                       related_name='allocated_in',
                                       blank=True)

说我有一个雇员employee的特定实例。我可以这样将他从单个轮班实例shift中删除。

shift.employees.remove(employee)

如何从employee的查询集中的每个实例中删除Shift

shift_qs = Shift.objects.filter(date__gt=timezone.now().date)

我想在单个查询中从employee的每个实例中删除shift_qs。最好不要遍历查询集

1 个答案:

答案 0 :(得分:2)

使用中间模型:

IModel = shift_qs.employees.through
IModel.objects.filter(shift__in=shift_qs, employee=employee).delete()