【发布时间】:2021-04-12 08:12:35
【问题描述】:
我有三个这样的模型(简体)。
class Locker(CoreModel):
def __str__(self):
return self.name
topic = models.CharField(
verbose_name=_('topic'),
help_text=_("locker description"),
null=True,
max_length=1024
)
name = models.CharField(
verbose_name=_('name'),
help_text=_("locker name"),
max_length=100,
validators=(
MinLengthValidator(2),
)
)
owner = models.ForeignKey(
to=settings.AUTH_USER_MODEL,
related_name='owned_locker_set',
verbose_name=_('owner'),
on_delete=models.CASCADE
)
class Folder(CoreModel):
def __str__(self):
return self.name
name = models.CharField(
verbose_name=_('name'),
help_text=_('name of the folder'),
max_length=256
)
parent = models.ForeignKey(
to='self',
verbose_name=_('parent'),
on_delete=models.CASCADE,
null=True
)
locker = models.ForeignKey(
to='lockers.Locker',
verbose_name=_('locker'),
on_delete=models.CASCADE,
editable=False
)
class Upload(CoreModel):
def __str__(self):
return self.name
name = models.CharField(
verbose_name=_('name'),
help_text=_("upload name"),
max_length=100,
validators=(
MinLengthValidator(2),
)
)
locker = models.ForeignKey(
to='lockers.Locker',
verbose_name=_('locker'),
on_delete=models.CASCADE,
editable=False
)
parent = models.ForeignKey(
to='lockers.Folder',
verbose_name=_('folder'),
on_delete=models.CASCADE,
null=True
)
file = PrivateFileField(
verbose_name=_('file'),
help_text=_("raw file"),
upload_to='uploads/',
storage=private_storage
)
如您所见,该结构是递归的。 理想情况下,我想从前端发出一个请求以返回所有文件和文件夹 储物柜在根级别(父级为无)。然后,我还想请求获取指定文件夹内的所有文件和文件夹(当用户在前端打开文件夹时)。
我现在正在使用 Django Rest Framework。 但是,我想不出一种方法来实现这一点,因为我必须将两个模型序列化到一个视图中(我还需要支持分页)。如何以最简单的方式实现?
有人可以帮帮我吗? 提前非常感谢!
相关的github讨论是here。
编辑 我可以想象端点结构是这样的。
# lists all files and folders in the locker.
path('lockers/<int:locker_id>/metadata/')
# lists all files and folders in the folder with the given pk.
path('lockers/<int:locker_id>/folders/<int:pk>/metadata/'),
# create an upload.
path('lockers/<int:locker_id>/uploads/')
# create and list the folders available.
path('lockers/<int:locker_id>/folders/'),
【问题讨论】:
标签: django django-rest-framework