Здравствуйте! Делаю одностраничное приложение на Джанго 1.9 (с rest framework). Суть проблемы такова:
Есть всего две модели Case(Кейсы) и Article(Множество статей о каждом кейсе), на главной странице выводится только список превью к Кейсам. Но на странице с детальным описанием определённого кейса нужно, помимо информации из самой модели Case, вывести несколько экземпляров Article этого кейса, и вот здесь возникают вопросы. Для последующей передачи всех данных в соответствующий шаблон я использую сериализотор:
from rest_framework import serializers
from landing.models import Case, Article
class CasePreviewSerializer(serializers.ModelSerializer):
class Meta:
model = Case
fields = [
'id',
'name',
'preview',
'slider_preview',
'url',
]
class CaseDetailSerializer(serializers.ModelSerializer):
class Meta:
model = Case
fields = [
'name',
'slider_preview',
]
class Meta:
model = Article
fields = [
'picture',
'caption',
]
Как видно из этого куска кода, в классе CaseDetailSerializer я наивно пытаюсь дважды определить Мета-класс - сначала для модели Case, а потом - для Article, чтобы получить все необходимые для представления данные, однако Джанго выкидывает ошибку.
models.py:from django.db import models
from django.utils.translation import ugettext_lazy as _
class Case(models.Model):
name = models.CharField(_('case name'), max_length=30)
preview = models.ImageField(_('preview image'), upload_to="images")
created_at = models.DateTimeField(_('created at'), auto_now_add=True)
slider = models.BooleanField(_('is slider preview availible'))
if slider:
slider_preview = models.ImageField(_('slider preview'), upload_to="images")
def __str__(self):
return self.name
class Article(models.Model):
case = models.ForeignKey(Case)
picture = models.ImageField(_('picture'), upload_to="images")
caption = models.TextField(_('text'), max_length=501)
def __str__(self):
return self.caption
views.pyfrom rest_framework import viewsets
from .serializers import *
class CaseViewSet(viewsets.ReadOnlyModelViewSet):
queryset = Case.objects.all()
def get_serializer_class(self):
if self.action == 'list':
return CasePreviewSerializer
return CaseDetailSerializer
Возможно, я в корне неправильно реализовываю такую концепцию (чтобы у каждого экземпляра Case было множество экземпляров Article)?