Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 可写嵌套序列化程序用户和用户配置文件不';行不通_Python_Django_Django Rest Framework - Fatal编程技术网

Python 可写嵌套序列化程序用户和用户配置文件不';行不通

Python 可写嵌套序列化程序用户和用户配置文件不';行不通,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正试图通过django rest framework和他的配置文件创建一个用户注册端点,结果表明我还没有为序列化程序创建显式的.create()方法。我错过了什么 这是我的模特 class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True) language = models.CharField(max_length=4

我正试图通过django rest framework和他的配置文件创建一个用户注册端点,结果表明我还没有为序列化程序创建显式的.create()方法。我错过了什么

这是我的模特

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, blank=True, null=True)
    language = models.CharField(max_length=4, default='es')

    def __unicode__(self):
        return "%s - %s" % (self.user, self.language)
我的序列化程序.py

class ProfileCreateSerializer(serializers.ModelSerializer):

    class Meta:
        model = Profile
        fields = [
        'language',
        ]


class UserSerializer(serializers.ModelSerializer):
    profile = ProfileCreateSerializer()

    class Meta:
        model = User
        fields = [
        'username',
        'profile',
        ]

def create (self, validated_data):
    user = User.objects.create(username=validated_data['username'])
    user.set_password(User.objects.make_random_password())
    profile_data = validated_data.pop('profile')
    Profile.objects.create(user=user, **profile_data)
    user.save()
我的观点

class ProfileCreateAPIView(CreateAPIView):
    queryset = User.objects.all()
    model = Profile
    serializer_class = UserSerializer

代码看起来正常,但缩进看起来错误:
.create()
方法需要是序列化程序上的一个方法,因此它应该缩进到与
类Meta:
语句相同的级别

它应该是这样的(注意
create()
方法上的缩进):


如果有帮助的话,请参阅中的更多示例。

这真的是源代码的缩进吗?你能粘贴完整的回溯吗?
class UserSerializer(serializers.ModelSerializer):

    profile = ProfileCreateSerializer()

    class Meta:
        model = User
        fields = [ 'username', 'profile', ]

    def create (self, validated_data):
        user = User.objects.create(username=validated_data['username'])
        user.set_password(User.objects.make_random_password())
        profile_data = validated_data.pop('profile')
        Profile.objects.create(user=user, **profile_data)
        user.save()