ImproperlyConfigured at /books/ Имя поля `Published_date` недопустимо для модели `Books`.

Я создаю rest api, который получает данные из базы данных и показывает все поля, касающиеся книг в базе данных.

models.py код:

class Books(models.Model):
   Name = models.CharField(max_length=250)
   Author = models.ForeignKey('Authors', on_delete=models.CASCADE, default=None)
   Published_Date = models.DateField(blank=False)
   Pages = models.IntegerField()
   critics = models.IntegerField(default=0)

   def __str__(self) -> str:
      return self.Name

serializer.py код:

class BookSerializer(serializers.ModelSerializer):
    class Meta:
       model = Books
       fields = ['Name', 'Author', 'Published_date', 'Pages', 'critics']

urls.py код:

urlpatterns = [
    path('books/', views.BookList.as_view()),
    path('Bdetails/<str:pk>', views.BookDetail.as_view()),
]

views.py код:

class BookList(generics.ListCreateAPIView):
    queryset = Books.objects.all()
    serializer_class = BookSerializer


class BookDetail(generics.RetrieveUpdateDestroyAPIView):
    queryset = Books.objects.all()
    serializer_class = BookSerializer

traceback:

Ваша помощь будет оценена по достоинству

Ваше поле названо Published_Date с прописной D, а не Published_date. Но обычно поля не пишутся с прописной буквы, а в snake_case, а имена моделей сингулярны, поэтому Book, а не Books, и Author, а не Authors:

class Book(models.Model):
   name = models.CharField(max_length=250)
   author = models.ForeignKey('Author', on_delete=models.CASCADE, default=None)
   published_date = models.DateField()
   pages = models.IntegerField()
   critics = models.IntegerField(default=0)

   def __str__(self) -> str:
      return self.name

Переименуйте имя вашего поля Published_date в Published_Date в вашем файле serializer.py.

serializer.py

class BookSerializer(serializers.ModelSerializer):
    class Meta:
       model = Books
       fields = ['Name', 'Author', 'Published_Date', 'Pages', 'critics']

models.py

class Books(models.Model):
   Name = models.CharField(max_length=250)
   Author = models.ForeignKey('Authors', on_delete=models.CASCADE, default=None)
   Published_Date = models.DateField(blank=False)
   Pages = models.IntegerField()
   critics = models.IntegerField(default=0)

   def __str__(self) -> str:
      return self.Name
Вернуться на верх