【问题标题】:what was first: view or serializer?首先是什么:视图或序列化程序?
【发布时间】:2021-05-04 22:48:53
【问题描述】:

最近我遇到了嵌套对象发布的问题。在研究了涉及视图 create() 实现或用于读取和写入的单独序列化程序的正确解决方案之后,重写了 create() 方法。

我用 axios 发帖,我的对象是这样的:

{
comment: str
priority: str
file: int // -> this one is ForeignKey for another object and needs its PK which is ID
}

我希望我的帖子数据结构化的方式是:

{
comment: str
priority: str
file: str // -> which is file object name
}

发送此请求后,DRF 应在 db 中查找具有此名称的文件并将其 id 放在此文件中。

这是正确的方法吗?或者我应该嵌套整个对象而不是它的 id 吗?

另一个问题,offtopic:请求后首先调用什么:序列化程序或视图?

【问题讨论】:

    标签: post django-rest-framework django-views axios django-serializer


    【解决方案1】:

    您可以在序列化程序中使用SlugRelatedField

    file = serializers.SlugRelatedField(
            slug_field='name'
         )
    

    但是你的模型的名称字段应该是唯一的=True

    【讨论】:

    • 这个解决方案是否允许我按照我在问题中指定的方式发布数据?我还没有测试过,但我不会收到 DRF 错误消息,例如:“文件字段应该包含 ID 而不是 str”?我以前收到过这条消息。
    • @Wiktoor 是的,它允许您只提供文件的名称,并在 db 中查找它而不是 pk 查找,如果没有找到该名称的文件将返回错误。请试一试,然后回到这里:)
    猜你喜欢
    • 1970-01-01
    • 2011-10-07
    • 1970-01-01
    • 1970-01-01
    • 2011-10-10
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    相关资源
    最近更新 更多