Django在保存到ModelViewSet之前更改值

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

我是Django(和REST框架)的新手,但在保存之前我很难更新一个值。现在我正在使用一个简单的ModelViewSet来更新记录。一切正常,但如果我在de admin站点中创建一个项目,该值不会得到更新

查看代码如下:

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太陌生了,这让我眼花缭乱。我很抱歉。你能提供一个片段吗?这是我问题的答案吗?管理站点运行良好。我只是想在保存之前更新一个值