我有3个模型Fileset
,File
和ContentBuild
。
File
和Fileset
有多对多的关系Contentbuild
和Fileset
有一对多的关系# models.py
class File(models.Model):
file_uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, db_index=True)
class ContentBuild(models.Model):
content_build_uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, db_index=True)
content_build_name = models.CharField(max_length=50)
rolled_out = models.BooleanField(default=False, editable=False)
class Fileset(models.Model):
fileset_uuid = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False, db_index=True)
files = models.ManyToManyField(File, related_name='fileset_files'
content_build = models.ForeignKey(ContentBuild, on_delete=models.CASCADE, related_name='content_filesets')
删除Fileset
时,我只想删除在推出的Files
中未使用的相关ContentBuild
。我可以过滤有资格被删除的Files
,如下所示:
File.objects.filter(
fileset_files__isnull=False,
fileset_files__content_build__rolled_out=False
)
我不知道如何以及在何处实现删除由上面的过滤器返回的Files
的函数。
我的想法是创建一个函数并将其传递给on_delete
,但是ManyToManyField
没有on_delete
。
我在哪里实现删除功能以删除与要删除的Files
相关的某些Fileset
?