{"non_field_errors":["Неверные данные. Ожидали словарь, а получили компанию."]}
file company.py(models)
from django.db import models
COMPANY_TYPE = [('ИП', 'ИП'), ('АО', 'АО'), ('ТОО', 'ТОО')]
class Company(models.Model):
name = models.CharField(blank=False, max_length=255)
company_type = models.CharField(blank=False, max_length=10, choices=COMPANY_TYPE, default='ИП')
logo = models.CharField(blank=False, max_length=255)
owner = models.ForeignKey('user.User', on_delete=models.CASCADE, related_name='companies')
average_review = models.FloatField(blank=True, default=0, editable=True)
count_of_review = models.IntegerField(blank=True, default=0, editable=True)
created_date = models.DateTimeField(blank=False, auto_now_add=True)
last_change_date = models.DateTimeField(blank=False, auto_now=True)
def __str__(self):
return self.name
views.py
class CompanyDetailView(APIView):
permission_classes = [IsAuthenticated]
def get(self, request, company_id):
data = get_object_or_404(Company, id=company_id)
payload = CompanyDetailSerializer(data=data)
payload.is_valid(raise_exception=True)
return Response(payload.data)
serializers.py
class CompanyDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Company
fields = ('id', 'name', 'company_type', 'logo', 'owner', 'average_review', 'count_of_review', 'created_date', 'last_change_date')
Но он возвращает данные
{"non_field_errors":["Invalid data. Expected a dictionary, but got Company."]}
Я не смог найти никаких решений, я только начал кодировать в rest framework)
Удалите payload.is_valid(raise_exception=True)
из вашего кода
Мы используем его в POST
& Update
конечных точках, чтобы убедиться, что тело запроса содержит данные, которые нам нужно получить
Посмотрите эти ссылки для получения дополнительной информации Link1, Link2