2017-10-14 91 views
1

我希望我的应用程序的步行客户能够要求一个rendez虚拟愿望 自动创建一个新的用户任何时候一个新的用户名后发送与相约数据和默认密码Django休息创建新用户时,创建对象从邮政

这里是我的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') 

请你能帮助我SOLV Ë这个问题我想插入从后到用户模式会合模型的一些数据,其余

我得到这个

{ 
    "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不是新用户,我有与我的表单一起发送。 在此先感谢。

回答

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),这是actualy空时,默认情况未登录用户

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

+0

你的答案解决了我的问题Matus。 –

+1

Tkx你让我的一天!只是对于其他谁将面临这个问题不要忘记指定嵌套的字段,我做了这个从@Matus获得Post的数据帮助username = self.request.data.get('owner',dict())。get('用户名')和serializer.save(owner = user) –