Django在保存到ModelViewSet之前更改值
我是Django(和REST框架)的新手,但在保存之前我很难更新一个值。现在我正在使用一个简单的ModelViewSet来更新记录。一切正常,但如果我在de admin站点中创建一个项目,该值不会得到更新 查看代码如下:Django在保存到ModelViewSet之前更改值,django,django-rest-framework,Django,Django Rest Framework,我是Django(和REST框架)的新手,但在保存之前我很难更新一个值。现在我正在使用一个简单的ModelViewSet来更新记录。一切正常,但如果我在de admin站点中创建一个项目,该值不会得到更新 查看代码如下: class OauthProviderViewSet(viewsets.ModelViewSet): queryset = OauthProvider.objects.all() serializer_class = OauthProviderSerialize
class OauthProviderViewSet(viewsets.ModelViewSet):
queryset = OauthProvider.objects.all()
serializer_class = OauthProviderSerializer
authentication_classes = [SessionAuthentication, BasicAuthentication]
permission_classes = [IsAdminUser]
def perform_create(self, serializer):
changed_credentials = "test" + self.request.credentials
serializer.save(credentials=changed_credentials)
我只想将单词测试预先挂起到凭据字段
编辑:建议发布一篇文章,解释序列化程序的create和模型的create函数之间的区别。有趣的是,1。我不明白其中的区别,但是。他们两个都不工作
EDIT2:我在序列化程序中尝试了一些我发现的东西,同样,所有东西都可以完美地工作,但我的代码片段没有执行:
class OauthProviderSerializer(serializers.ModelSerializer):
class Meta:
model = OauthProvider
#fields = ['id', 'title', 'author']
fields = "__all__"
def create(self, instance, validated_data):
validated_data['credentials'] = "test" + validated_data['credentials']
return super(OauthProviderSerializer, self).create(validated_data)
编辑3:我发现了问题(部分)。我使用管理屏幕创建值,但该功能不使用视图或序列化程序。如果我使用普通的POST方法,我的代码就会被执行
对于此功能,最好更新ModelViewSet的perform\u create方法,这是对的吗?根据此url:每次在models.py文件中创建新模型时,都必须导入该模型 在admin.py文件中建模,并对其应用register方法 在admin.py中导入所有模型。像这样: from.models import*#表示从文件models.py导入所有模型 admin.site.register(OauthProviderViewSet)#然后应用register方法 然后,您将能够在admin.py文件中看到OauthProviderViewSet模型 如果您已经这样做了,并且可以在管理页面中看到您的模型 然后,每次从管理页面创建项目时,都必须将它们保存在 Django更新数据库的命令 如果要从表单(在模板=>html文件中)更新项目,则 由views.py文件中的函数渲染),但它不起作用,则您的
views.py文件。这可能意味着您的数据根本没有保存在数据库中。“保存前更新值”。。。你为什么不在序列化程序中做事情?告诉我怎么做,我会做:)就像我说的,我是newRef DRF doc:这能回答你的问题吗?我已经找到了这两个链接,但我对django太陌生了,这让我眼花缭乱。我很抱歉。你能提供一个片段吗?这是我问题的答案吗?管理站点运行良好。我只是想在保存之前更新一个值