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_datesnake_case, а имена моделей сингулярны, поэтому Book, а не , и BooksAuthor, а не :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