我们在E
和U
模型之间有m2m关系:
class E(models.Model):
us = models.ManyToManyField('U', related_name='events', symmetrical=False)
class U(models.Model):
pass
现在我们要删除 pk=2 的 U 的所有链接。
我写了这段代码:U.events.through.objects.filter(u=2).delete()
。
这段代码可以缩短/简化吗?
你可以做这样的事情:
U.objects.get(pk=2).events.clear()
Django 文档中有一些有用的例子:
https://docs.djangoproject.com/en/2.0/topics/db/examples/many_to_many/
作为旁注,您不需要symmetrical=False
多对多定义。引用 Django 文档:
仅用于 ManyToManyFields 对自身的定义。
看:
https://docs.djangoproject.com/en/2.0/ref/models/fields/#django.db.models.ManyToManyField.symmetrical