首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >前部的邮件有问题。方法默认情况下不支持可写的虚线源字段。

前部的邮件有问题。方法默认情况下不支持可写的虚线源字段。
EN

Stack Overflow用户
提问于 2019-05-07 18:07:09
回答 1查看 1.4K关注 0票数 1

我在序列化程序中创建了一些虚点源字段。我做的原因是必须显示外键的名称值,而不是pk值。但是,当我试图从前端发布时,djang抛出了如下内容:默认情况下,AssertionError at /api/my-api/ .create()方法不支持可写的虚线源字段。为序列化程序.create() MySerializer编写显式的read_only=True方法,或在虚线源序列化器字段上设置read_only=True.

因此,当我设置read_only = True时,我的POST就会请求null,而每个字段都来自虚线源序列化器字段。

这是我的序列化程序:

代码语言:javascript
复制
class FcaWorksSerializer(serializers.ModelSerializer):
    fell_form = serializers.CharField(source="fell_form.name" )
    #...
    main_type = serializers.CharField(source="main_type.name")

    class Meta:
        model = FcaWorks
        fields = ('id_fca','wkod', 'main_type','fell_form','fell_type','kind',\
        'sortiment','vol_drew','use_type','fca_res','ed_izm','vol_les','act_name',\
        'obj_type','use_area','indicator','comment','date_report')

我怎样才能解决这个问题?

EN

回答 1

Stack Overflow用户

发布于 2021-04-16 07:27:02

文档来看,有多种处理ForeignKey关系的方法。如果外交关系不是“多对多”,你就不必自己创造方法。在您的情况下,您可以使用以下之一:

  • SlugRelatedField
  • PrimaryKeyRelatedField 类FcaWorksSerializer(serializers.ModelSerializer):fell_form = serializers.SlugRelatedField(slug_field="name",queryset =*“”fell_form来自的查询集*)#.serializers.SlugRelatedField(slug_field="name",queryset =* main_type来自“”*)类Meta: main_type = FcaWorks main_type= ('id_fca','wkod','main_type','fell_form','fell_type',\ 'sortiment',‘vol’,'use_type','fca_res',‘'ed_izm',’vol‘,'act_name',\ 'obj_type','use_area',’指示器‘,’注释‘,'date_report')

然后使用PrimaryKeyRelated字段:

代码语言:javascript
复制
 class FcaWorksSerializer(serializers.ModelSerializer):
        fell_form = serializers.PrimaryKeyRelatedField(source ="fell_form.name", queryset = ***"""The queryset that fell_form came from"""*** )
        #...
        main_type = serializers.PrimaryKeyRelatedField(source="main_type.name", queryset = ***"""The queryset main_type came from"""***)

当我遇到同样的问题时,这对我起了作用,不过就像前面所说的“多到多”字段一样,您必须显式地编写创建和更新方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56028267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档