models.py:
class Book(models.Model):
name = models.CharField(max_length=100)
description = models.TextField(max_length=500)
image = models.ImageField(height_field = "height_field", width_field = "width_field")
height_field = models.IntegerField(default=255)
width_field = models.IntegerField(default=255)
price = models.FloatField()
edition = models.CharField(max_length=100)
no_of_page = models.IntegerField()
country = models.CharField(max_length=50)
publication = models.ForeignKey(Publication, on_delete=models.CASCADE)
authors = models.ManyToManyField(Author, through='AuthorBook')
ratings = GenericRelation(Rating, related_query_name='books')
class AuthorBook(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
book = models.ForeignKey(Book, on_delete=models.CASCADE)
class Author(models.Model):
name = models.CharField(max_length=100)
biography = models.TextField(max_length=500)
image = models.ImageField(height_field = "height_field", width_field = "width_field")
height_field = models.IntegerField(default=255)
width_field = models.IntegerField(default=255)
serializers.py
class AuthorListSerializer(ModelSerializer):
url = author_detail_url
class Meta:
model = Author
fields = [
'url',
'id',
'name',
]
class BookCreateUpdateSerializer(ModelSerializer):
authors = AuthorListSerializer(many=True, read_only=True)
def create(self, validated_data):
#code
def update(self, instance, validated_data):
#code
class Meta:
model = Book
fields = [
'name',
'description',
'price',
'edition',
'no_of_page',
'country',
'publication',
'authors',
]
views.py
class BookCreateAPIView(CreateAPIView):
queryset = Book.objects.all()
serializer_class = BookCreateUpdateSerializer
Я работаю над внедрением Django REST Framework. У меня две модели Book и Author. Но django create api view не показывает раскрывающееся поле авторов. Я проверил много решений DRF для многих полей. Пожалуйста, помогите мне показать поле авторов и написать функцию create() и update. Если вы увидите страницу DRF api, все будет ясно.






Это из-за read_only=True. Попробуйте удалить этот аргумент для поля авторов сериализатора:
class BookCreateUpdateSerializer(ModelSerializer):
authors = AuthorListSerializer(many=True)
@SadmanSobhan Похоже, для этого был открыт вопрос github.com/encode/django-rest-framework/issues/2148. Вы можете использовать почтальон вместо просматриваемого API
показывает
Authors Lists are not currently supported in HTML input.