Django如何查找对象是否被model.py中另一个类的ForeignKey引用



我有两个如下所示的类,我想向File添加一个函数,以检查Project类中的任何数据是否引用了该文件(类似于"最近发布的"(:https://docs.djangoproject.com/en/4.0/_images/admin12t.png(。

class File(models.Model):
def __str__(self):
return self.name
file = models.FileField(upload_to='uploads/')
class Project(models.Model):
def __str__(self):
return self.name
files = models.ManyToManyField(File)
class File(models.Model):
file = models.FileField(upload_to='uploads/')
def __str__(self):
return self.name
def is_used_in_a_project(self):
return self.project_set.exists()

Django在ManyToManyField关系的另一侧自动公开一个<model>_set属性。这是一个查询集,包含通过另一个模型上的m2m关系链接到它的所有实例。

请参阅https://docs.djangoproject.com/en/4.0/topics/db/examples/many_to_many/

您可以更改此";反向关系";属性,方法是设置ManyToManyField的related_name

https://docs.djangoproject.com/en/4.0/ref/models/fields/#manytomany-自变量

例如,您可以定义:

class Project(models.Model):
files = models.ManyToManyField(File, related_name="linked_projects")
class File(models.Model):
def is_used_in_a_project(self):
return self.linked_projects.exists()

相关内容

  • 没有找到相关文章

最新更新