Я действительно ценю ваши усилия, я получаю ошибку, как

я есть книга, профиль, модель Book_stat, как показано ниже. Я пытаюсь минимизировать поля изBook модель и метод prefetch_related для получения данных изBook_stat модель.

models.py

class Book(models.Model):
    title = models.CharField(max_length=200)
    image = models.FileField(upload_to="mp/", blank=True)

    def __str__(self):
        return self.title

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    full_name = models.CharField(max_length=150)

    def __str__(self):
        return self.full_name

class Book_stat(models.Model):
    user = models.ForeignKey(User)
    book = models.ForeignKey(Book)
    rating = models.DecimalField(max_digits=5, decimal_places=2, default=Decimal('0.00'))
    like = models.BooleanField(default=False)

    def __str__(self):
        return self.book.title + ' by: ' + self.user.profile.full_name  

views.py

def books(request):
    books = books = Book.objects.prefetch_related('book_stat_set').values('id','title', 'image')
    for book in books:
        for book_stat in book.book_stat_set.all(): # error: 'dict' object has no attribute 'book_stat_set'
            book.stats = book_stat
            pprint(vars(book_stat))
    return HttpResponse(books, content_type= 'json')

1) Я хотел бы отправитьjson response к передней части, как показано ниже
2) Если возможно, я хочу использоватьbook_stat_set.values('like', 'rating') вместоbook_stat_set.all() так что я запрашиваюlike, rating только

books = [
    {
        id: 1,
        title: 'some title1',
        image: 'image1.jpg',
        stats: {
            like: true,
            rating: 3.50
        }
    },
    {
        id: 2,
        title: 'some title2',
        image: 'image1.jpg',
        stats: {
            like: true,
            rating: 3.50
        }
    }
]

Ответы на вопрос(0)

Ваш ответ на вопрос