相关疑难解决方法(0)

Django Rest Framework使OnetoOne关系船感觉它是一个模型

User保存了两个不同的模型,UserProfile并且User.现在从API的角度来看,没有人真正关心这两者是不同的.

所以我在这里:

class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'first_name', 'last_name', 'email')
Run Code Online (Sandbox Code Playgroud)

class UserPSerializer(serializers.HyperlinkedModelSerializer):
    full_name = Field(source='full_name')
    class Meta:
        model = UserProfile
        fields = ('url', 'mobile', 'user','favourite_locations')
Run Code Online (Sandbox Code Playgroud)

所以在UserPSerializer该领域user只是该资源的链接.但从用户的角度来看,根本没有理由让他知道User.

是否有一些技巧可以将它们混合在一起并作为一个模型呈现给用户,或者我必须以某种方式手动执行此操作.

django rest django-models django-rest-framework

39
推荐指数
3
解决办法
1万
查看次数

DjangoRestFramework - 如何使用模型序列化程序访问 OneToOneField 反向关系的其他字段?

我正在使用默认的 User 模型,并且还使用 UserExtended 模型对其进行了扩展:

class Country(models.Model):
    countryName = models.CharField(max_length=50, unique=True)
    countryCode = models.CharField(max_length=10, unique=True)

class UserExtended(models.Model):
    user = models.OneToOneField(User, related_name="userextended")
    country = models.ForeignKey(Country)
Run Code Online (Sandbox Code Playgroud)

我正在尝试遵循此处记录的内容:http : //www.django-rest-framework.org/api-guide/relations/#reverse-relations

这是我的 UserSerializer:

class UserSerializer(serializers.ModelSerializer):

    def __init__(self, *args, **kwargs):
            super(UserSerializer, self).__init__(*args, **kwargs) # call the super() 
            for field in self.fields: # iterate over the serializer fields
                self.fields[field].error_messages['required'] = 'Enter a valid %s.'%field # set the custom error message

    class Meta:
        model = User
        fields = ('username', 'password', 'email', 'userextended')

        extra_kwargs = {
                    'password': …
Run Code Online (Sandbox Code Playgroud)

django django-models django-serializer django-rest-framework

6
推荐指数
1
解决办法
1695
查看次数