【发布时间】:2018-01-08 08:37:10
【问题描述】:
我是 django rest 框架的新手,我正在尝试在同一个请求中创建/更新 2 个对象:
class PessoaSerializer(serializers.ModelSerializer):
user = UserSerializer(required=False)
class Meta:
model = Pessoa
fields = ('id', 'user', 'nome', 'email', 'cargo', 'fone', 'cep', 'celular', 'endereco', 'observacao', 'municipio')
def create(self, validated_data):
usuario = User()
usuario.first_name = validated_data.get('nome')
usuario.username = validated_data.get('email')
usuario.last_name = validated_data.get('nome') #TODO
usuario.email = validated_data.get('email')
usuario.is_active = True
usuario.is_staff = False
usuario.is_superuser = False
usuario.set_password(validated_data.get('email')) #TODO
usuario.last_login = datetime.datetime.now()
usuario.date_joined = datetime.datetime.now()
usuario.save()
validated_data['user'] = usuario
return Pessoa.objects.create(**validated_data)
def update(self, instance, validated_data):
#TODO
这是最好的方法吗?还是我遗漏了什么?
【问题讨论】:
-
为什么需要创建两个对象?你到底需要做什么?我认为
User.username是unique字段。 -
在这种特殊情况下,当我创建 Pessoa 对象时,我也需要创建/创建一个 User 对象:` usuario.save() encrypted_data['user'] = usuario ` 所以,我保存用户对象并将其放入validated_data
-
对你有用吗?
-
是的。我能够保存用户对象并将其链接到 Pessoa 对象。这就是为什么我要质疑:这是最好的方式/时刻吗?在序列化器中?
-
我有另一种方法,但我认为我的方法是一样的......只是有点不同......
标签: python django django-rest-framework django-rest-viewsets