Django递归模型

标签 django recursion filetree

我正在使用 Django 为我的项目和文件制作自己的“云服务器”。 我正在尝试创建树形文件结构,但我不知道该怎么做。
以及我如何制作基于用户名的 URL,例如 (username/root/home/Documents/...)
我也对一些好的链接和身份验证示例以及 django 风格的云服务器解决方案感兴趣。

模型.py

class BasicFile(models.Model):
    file_name = models.CharField(max_length=80)
    last_edit = models.DateTimeField(default=datetime.now, blank=True)
    sub_folders = models.IntegerField()
    sub_files = models.IntegerField()

    def __str__(self):
        return self.file_name


views.py

class IndexView(LoginRequiredMixin, ListView):
    template_name = 'cloud/index.html'
    context_object_name = 'project_file'

    def get_queryset(self, *args, **kwargs):
        return ProjectFile.objects.all()



urls.py

re_path(r'^(?P<username>)/$', views.IndexView.as_view(), name='index'),
re_path(r'^(?P<username>/f1/f1_child)/$', views.IndexView.as_view(), name='index'),

最佳答案

为了能够从您的文件对象创建嵌套结构,您可以创建一个可选的关系,以便文件可以具有“父级”,然后您可以从中构建树。

为此,您可以向模型中添加一个字段;

parent = models.ForeignKey("self", blank=True)

这可能有助于您了解身份验证和用户; https://developer.mozilla.org/en-US/docs/Learn/Server-side/Django/Authentication

关于Django递归模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50309827/

相关文章:

python - Django channel ; ECHO 示例不起作用

c++ - 字符串中最长连续字符的长度

smalltalk - Monticello - 在一次提交中保存到 Squeaksource 和 Filetree

algorithm - 将文件树转换为另一个文件树的最短操作序列

django - 保存 ModelForm 时 NOT NULL 约束失败

django - 如何在 django 中使用子进程执行 ffmpeg 缩略图提取命令?

django - 将客户端计算字段添加到 django admin

list - 如何制作尾递归函数

java - 递归方法,接受输入 s 和 k 并生成长度为 k 的所有字符串