2017-10-14 8 views
1

私のアプリのウォーキングの顧客にrendez-vousを質問できるようにします 新しいユーザー名を投稿するときにいつでも自動的に新しいユーザーを作成しますランデブーデータおよびデフォルトのパスワードここ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) 

あなたがSOLV私を助けることができますしてください私のシリアライザ

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') 

ですE Iが欲しいという問題がランデブーモデルにUserモデルへのポストから一部のデータと残りの部分を挿入するために

私はこの

{ 
    "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 nullです

あなたからユーザーを作成したい場合ポストメソッドによって送信されたデータは、self.request.data(http://www.django-rest-framework.org/api-guide/requests/#data

+0

でそれらにアクセスできるはずです。あなたの答えは私の問題を解決しました。 –

+1

Tkxあなたは私の一日を作った!!この問題に直面する他の人のために、ネストされたフィールドを指定するのを忘れないでください。@Matus help username = self.request.data.get( 'owner'、dict())を使ってPostからデータを取得しました。get( ' username ')とserializer.save(owner = user) –

関連する問題