Django休息时从post创建对象时创建新用户

时间:2017-10-14 00:28:21

标签: serialization django-rest-framework

我希望我的应用程序的行走客户能够要求我想要的一个rendez-vous  随时使用rendez-vous数据和默认密码发送新用户名时自动创建新用户

这是我的view.py

class rvList(generics.ListCreateAPIView):
queryset = Rendezvous.objects.all() 
serializer_class = RvSerializer


def perform_create(self, serializer):
    serializer.save(owner=self.request.user)

这是我的序列化程序

class UserSerializer(serializers.ModelSerializer):
class Meta:
    model = User
    fields = ['username', 'email', 'first_name', 'last_name']

class RvSerializer(serializers.ModelSerializer):
    owner = UserSerializer()
    class Meta:
        model = Rendezvous
        fields = ('id','daterv', 'heurerv', 'lieurv','owner')

请你帮我解决这个问题我想从帖子到用户模型插入一些数据,其余的数据到RendezVous模型

我得到了这个

   {
    "id": 11,
    "daterv": "2013-02-01",
    "heurerv": "10:30",
    "lieurv": "Thies",
    "owner": {
        "username": "admin",
        "email": "",
        "first_name": "",
        "last_name": ""
    }
},
{
    "id": 12,
    "daterv": "2013-02-01",
    "heurerv": "08:30",
    "lieurv": "Dakar",
    "owner": null
},

仅使用相关的rv设置了已记录的用户,而不是我使用我的表单发送的新用户。  提前谢谢。

1 个答案:

答案 0 :(得分:0)

我认为问题是,你没有用帖子数据填充序列号。

在这部分:

def perform_create(self, serializer):
    serializer.save(owner=self.request.user)

self.request.user是经过身份验证的用户(http://www.django-rest-framework.org/api-guide/requests/#user),默认情况下,当用户未登录时,该用户实际为null。

如果您想通过post方法发送的数据创建用户,您应该可以在self.request.data(http://www.django-rest-framework.org/api-guide/requests/#data)中访问它们