缩短 Python Django DB 查询



我们在EU模型之间有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

最新更新