Я строю проект с использованием Django rest Api. У меня есть модель с именем DriverProfile, теперь мне нужно добавить файл драйвера, но я получаю сообщение об ошибке ниже:
При попытке получить ошибкузначение для поля phone
в сериализаторе DriverProfileCreateSerializer
. Поле сериализатора может иметь неправильное имя и не соответствовать ни одному атрибуту или ключу в экземпляре QuerySet
.Исходный текст исключения был: объект 'QuerySet' не имеет атрибута 'phone'
. Я использовал APIView и modelSerializer, и я не знаю, почему это происходит, когда в DriverProfile присутствует поле телефона.Важно, когда я делаю это из общих представлений вместо APIView, это работает, но когда я использую сериализатор модели и представление API, оно выдает ошибки. Я предполагаю, что ошибка в create () в serialzer модели, где я использую driverprofile = DriverProfile.objects.all(), Я не могу отсортировать, пожалуйста, руководство.
Models.py:
class Driver(models.Model):
User=models.ForeignKey(User,on_delete=models.CASCADE)
objects = models.Manager()
class DriverProfile(models.Model):
driver=models.OneToOneField(Driver,on_delete=models.CASCADE)
drive_name=models.CharField(max_length=20,blank=True)
phone=models.CharField(max_length=12)
driver_cnic=models.CharField(max_length=13)
Views.py
class CreateDriverProfile(APIView):
def get(self,request):
return Response([DriverProfileCreateSerializer(driver).data for driver in DriverProfile.objects.all()])
def post(self,request):
payload=request.data
serializer=DriverProfileCreateSerializer(data=payload)
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)
Serializer.py:
class DriverProfileCreateSerializer(serializers.ModelSerializer): # create driver profile
class Meta:
model=DriverProfile
fields = '__all__'
def create(self, validated_data):
driverprofile = DriverProfile.objects.all()
return driverprofile
def update(self, instance, validated_data):
for k, v in validated_data.items():
setattr(instance, k, v)
instance.save()
return instance