gpt4 book ai didi

python - 拥有一个可以属于其他两个模型中的任何一个的 django 模型(外键关系)

转载 作者:行者123 更新时间:2023-12-01 04:11:03 31 4
gpt4 key购买 nike

我正在尝试使用 django 模拟文件浏览器应用程序。我的基本模型是用户有​​一个项目,并且该项目有文件和其他也可以有文件的子目录。

这是我的 models.py 文件

class CaseFolder(models.Model):
name = models.CharField(max_length = 255)

class SubFolders(models.Model):
name = models.CharField(max_length = 255)
case = models.ForeignKey(CaseFolder)

class Documents(models.Model):
file = models.FileField(upload_to=set_upload_path)
belongs_to = models.ForeignKey(SubFolders)

到目前为止,我正在创建一个“MAIN”文件夹,它基本上是包含其他子目录的根文件夹。主文件夹还可以包含不属于子目录的文件。

如果我可以通过让文档模型引用根文件夹(如果它们不想属于子目录)来消除对“主”文件夹的需求,那就更好了。我看到的唯一方法是下面的。但想知道是否有更好的方法

class Documents(models.Model):
file = models.FileField(upload_to=set_upload_path)
belongs_to = models.ForeignKey(SubFolders,Null = True)
belongs_to_root = models.BooleanField(deafult=False)

最佳答案

忘记SubFolders模型。

您可以在 CaseFolder 模型中使用自引用关系来模拟这些结构,查看:

class CaseFolder(models.Model):
name = models.CharField()
parent = models.ForeignKey('self', blank=True, related_name='subfolders')

class Document(models.Model):
file = models.FileField(upload_to=set_upload_path)
belongs_to = models.ForeignKey(CaseFolder)

要知道Document是否属于根目录,只需使用document.belongs_to.parent is None即可。

关于python - 拥有一个可以属于其他两个模型中的任何一个的 django 模型(外键关系),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34946454/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com