私はdjango authテーブルのUserモデルを拡張し、同じものに対して残りのAPIを実装していました。django restフレームワークでネストされたシリアライザを実装する方法は?
GET/POSTリクエストを実装する方法がわかりません。
マイmodels.pyコードは次のとおりです。
class UserProfile(models.Model):
"""User profile model for information about user."""
users = models.OneToOneField(User)
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', message="Phone number must be entered in the format: '+999999999'")
phone_number = models.CharField(max_length=100, validators=[phone_regex], blank=True)
created_timestamp = models.DateTimeField(auto_now_add=True, null=True)
updated_timestamp = models.DateTimeField(auto_now=True, null=True)
マイserializers.pyコードは次のとおりです。
class UserSerializer(serializers.ModelSerializer):
"""Serializer for users."""
class Meta:
model = User
class UserProfileSerializer(serializers.ModelSerializer):
"""Serializer for user profiles."""
users = UserSerializer(many=True)
class Meta:
model = UserProfile
def create(self, validated_data):
users_data = validated_data.pop('users')
print 'yes'
print users_data
user_profile = UserProfile.objects.create(**validated_data)
for user_data in users_data:
user_data, created = User.objects.get_or_create(first_name=user_data['first_name'], last_name=user_data['last_name'],
username=user_data['username'], password=user_data['password'], email=user_data['email'], is_active=['is_active'])
user_profile.users.add(user_data)
return user_profile
マイv1.pyコードは次のとおりです。
class UserProfileList(APIView):
"""Get and post user profiles data."""
def get(self, request, format=None):
"""Get users."""
user_profiles = UserProfile.objects.all()
serialized_user_profiles = UserProfileSerializer(user_profiles, many=True)
return Response(serialized_user_profiles.data)
def post(self, request, format=None):
"""Post users."""
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
私はこの問題を考えますv1.pyファイルにあります。私はGETとPOST要求をしたい、私はJSONデータを送信するPOST要求のために。誰かがその実装で私を助けることができますか?実際には、POSTリクエストを行い、UserモデルとUserProfileモデルの両方にデータを格納するための単一のエンドポイントが必要です。
'URL(R '^ V1 /ユーザー/ $ '、csrf_exempt(userregistration.v1.MyUserViewSet.as_view({' get ':' queryset '})))、 'urls.pyファイルで' 'QuerySet'オブジェクトが呼び出せません。 – Ankit
getパラメータに 'queryset'をマッピングしていれば、mapp {" get ":" list "}する必要があります。このリンクに従ってくださいhttp://www.django-rest-framework.org/api-guide/routers/#example –
私はしようとしましたが、「MyUserViewSet」オブジェクトに属性「list」がありません。 – Ankit