我正在使用 Django v1.7dev 和 Django Rest Framework v2.3
我扩展了用户类如下:
class UserProfile(models.Model):
user = models.OneToOneField(User)
gang = models.ForeignKey('Gang', related_name='gangsters')
def __unicode__(self):
return self.user.username
User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0])
我还创建了一个用户序列化程序端点(当我发送 GET 请求时它不显示密码,但在我发送帖子时接受它,目的是使用它进行注册:
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'password', 'email')
def restore_object(self, attrs, instance=None):
user = super(UserSerializer, self).restore_object(attrs, instance)
user.set_password(attrs['password'])
return user
def to_native(self, obj):
ret = super(UserSerializer, self).to_native(obj)
del ret['password']
return ret
我很想扩展序列化程序以包含 gang 参数。类似的东西
gang = serializers.Field(source='profile.gang')
但可写而不是只读,因此当我注册用户时,我也可以插入帮派,可能以原子方式。在这种情况下,最好的方法是什么?我尝试过使用其他字段类型,但直到现在都没有成功。目前我正在发送两个单独的帖子(一个用于用户,一个用于用户配置文件,但我敢打赌有更好的方法......)