2015-05-18 3 views
4

Фон: У меня есть модель статьи, в которой хранятся некоторые статьи, и каждая статья может иметь несколько изображений. Мне нужно создать api для создания статьи и соответствующих изображений, если это необходимо. Но у меня нет никаких идей, как сделать так, чтобы изображения могли быть созданы одновременно.Django-rest-framework serializer: одновременно создает объект с посторонними объектами

models.py

class Article(models.Model): 
    id = models.AutoField(primary_key=True) 
    title = models.CharField(max_length=50) 
    content = models.CharField(max_length=255) 
    def __unicode__(self): 
     return self.title 

class ArticleImage(models.Model): 
    id = models.AutoField(primary_key=True) 
    image = models.ImageField(upload_to=get_file_path, blank=True, null=True) 
    article = models.ForeignKey(Article) 

serializers.py

class ArticleImageSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = ArticleImage 

class ArticleSerializer(serializers.ModelSerializer): 
    #images = ??? 
    class Meta: 
     model = Article 

api.py

class ArticleView(APIView): 
    def post(self, request, format=None): 
     try: 
      serializer = ArticleSerializer(request.data) 
      if serializer.is_valid(): 
       serializer.save() 
       return Response({'success': True}) 
      else: 
       return Response({'success': False}) 
     except: 
      return Response({'success': False}) 

запрос JSON

{ 
    "title":"Sample Title", 
    "content":"Sample Content", 
    "images":[ 
     "paul.jpg", 
     "ada.jpg" 
    ] 
} 

Спасибо за помощь.

+0

Являются ли данные изображения jpg включенными в json/post как-то? В противном случае, откуда будут получены изображения? – owenfi

+0

Да, изображение включено. Запрос json представляет собой образец структуры данных для ссылки на кого-либо и, фактически, при вызове api, Content-Type должен быть «multipart/form-data». Спасибо за ваш ответ. – Pang

+0

Кто-нибудь поможет в этом вопросе? Большое спасибо. – Pang

ответ

2

Предполагая, что вы используете DRF v3, вы можете найти ответ на свой вопрос под «Записываемых вложенных представлений» раздел официальных документов на «сериализаторах».

Дайте мне знать, если вам нужна дополнительная помощь.

Смежные вопросы