Django REST Framework многие для многих создают и обновляют - PullRequest
0 голосов
/ 26 апреля 2018

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 функцию.Если вы увидите страницу API DRF, это будет ясно.

enter image description here

1 Ответ

0 голосов
/ 26 апреля 2018

Это из-за read_only=True.Попробуйте удалить этот аргумент для поля авторов bookserializer:

class BookCreateUpdateSerializer(ModelSerializer):
    authors = AuthorListSerializer(many=True)
...