问题描述
我有关系数据库和要在其中发布的文件信息。 DB在某些属性中提供了3个持有ForeignKey的实体。
实体是:
我的问题是,当我发布特定文件的信息时,我必须在这些端点上发布,但例如WorkFile 拥有属性 file = ForeignKey(File)
- 这是一个 id 归档。这使我 POST
所有文件数据,然后 GET
用于获取 ID,然后使用这些 ID 在 WorkFile 上发布。
这是很多 POSTINGGETINGITEratingANDPROMISING(因为我的请求是在 react 上使用 axios 完成的)。
我尝试过的是仅带有 file=file_name
的 POST 数据构造对象,然后在 Django 端和 serialize.save()
的数据库中搜索它。但是对于外键,POST 需要 pk 而不是 str。
通过这个过程,我最终得到了:
axios.post().then(axios.get().then(axios.post(then))))
是否有任何简单/良好的实践方法?
解决方法
Django 的 POST 视图可以接受任何你想要的。至于通过相关模型属性查询您的模型,请查看官方文档:https://docs.djangoproject.com/en/3.1/topics/db/queries/#lookups-that-span-relationships
在你的情况下,它应该是这样的:
def my_post_view(request,file_name):
try:
work_file = WorkFile.objects.get(file__name=file_name)
except WorkFile.DoesNotExist:
raise Http404
...
其中 file_name
作为端点 URL 的一部分传递。