栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用SlugRelatedField创建和保存外键对象

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用SlugRelatedField创建和保存外键对象

SlugRelatedField
由Django的REST框架,像许多相关领域的提供,旨在与已经存在的对象使用。由于你要参考已存在的对象或需要创建的对象,因此你将无法原样使用它。

你将需要一个自定义项

SlugRelatedField
,当一个不存在时创建新对象。

class CreatableSlugRelatedField(serializers.SlugRelatedField):    def to_internal_value(self, data):        try: return self.get_queryset().get_or_create(**{self.slug_field: data})[0]        except ObjectDoesNotExist: self.fail('does_not_exist', slug_name=self.slug_field, value=smart_text(data))        except (TypeError, ValueError): self.fail('invalid')class MerchantSerializer(serializers.ModelSerializer):    phones = CreateableSlugRelatedField(        many=True,        slug_field='phone',        queryset=primitives.Phone.objects.all()    )    class meta:        model = Merchant        fields = ( 'merchant_id', 'name', 'is_active', 'phones',        )

如果切换到get_or_create,则将创建电话号码对象(如果尚不存在)。如果必须在模型上创建其他字段,则可能需要进行调整。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/374333.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号