【发布时间】:2022-01-25 23:36:04
【问题描述】:
我可以在创建和更新中调用相同的函数而不覆盖它吗?
您好,我在这方面还很陌生,正在尝试使用 DRY 原理 来实现我的代码。 所以我在 ModelSerializer's 中为 create_update_password 调用一个函数,同时为此创建或更改密码,我必须 覆盖创建和更新 在 ModelSerializer 和 create_update_password 中。除了调用这个函数之外,我没有在其中任何一个中做任何额外的功能。那么有什么方法可以让我在创建和更新中调用这个函数而不覆盖它。 如果有人可以提出任何建议,我真的很喜欢它。下面是代码示例 谢谢你
def create_update_password(self, instance, validated_data):
password = validated_data["password"]
instance.set_password(password)
instance.save()
class UserModelSerializer(ModelSerializer):
def create(self, validated_data):
instance = super(UserModelSerializer, self).create(validated_data)
self.create_update_password(instance, validated_data)
return instance
def update(self, instance, validated_data):
instance = super(UserModelSerializer, self).update(instance, validated_data)
self.create_update_password(instance, validated_data)
return instance
【问题讨论】:
标签: python-3.x django django-rest-framework