Я расширил пользовательскую модель таблицы django auth и реализую 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, для запроса POST я хочу отправить данные JSON. Может кто-то помочь мне в его реализации. Фактически, я хочу, чтобы одна конечная точка выполняла запрос POST и сохраняла данные в модели User model и UserProfile.
Я использую 'URL (г '^ v1/пользователей/$ ', csrf_exempt (userregistration.v1.MyUserViewSet.as_view ({' get ':' queryset '}))), 'в моем файле urls.py, но при получении ошибки' 'Объект QuerySet не вызываем'. – Ankit
вы указываете 'queryset' там в параметре get, вам нужно mapp {" get ":" list "}. Следуйте по этой ссылке http://www.django-rest-framework.org/api-guide/routers/#example –
Я пробовал, но получаю ошибку '' MyUserViewSet 'объект не имеет атрибута' list'' – Ankit