2017-10-14 114 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) –