Приветствую всех! Столкнулся с такой проблемой: У меня есть моделька которая связана по внешнему ключу к другому референсу. И вот мне нужно во вью в context подать nested (вложенный) json данных. Когда таблица ни с чем не связана - легко сделать это через нативный пакет django.serializer, но в данном случаю задача посложнее, и без rest-framework не обойтись, пожалуй. Сразу скажу, в него я еще не углублялся(Всякие апи и т д.) Так вот код:
models.py:class Directory(models.Model):
book = models.ForeignKey(Book)
name = models.CharField(max_length=255,blank=False,null=True)
description = models.CharField(max_length=1000,blank=True,null=True)
created_date = models.DateTimeField(default=datetime.now)
hidden = models.BooleanField(default=False)
class Meta:
verbose_name_plural = "Directories"
def __str__(self):
return "Dir<" + self.book.name + " - " + self.name + ">"
class FileIn(models.Model):
directory = models.ForeignKey(Directory, related_name="files")
name = models.CharField(max_length=255,blank=False,null=True)
typeof = models.CharField(max_length = 2,choices=FILES_CHOICE,default='F')
image = models.ImageField(null=True,blank=True,upload_to=upload_location,)
contents = models.CharField(max_length=1000,blank=True,null=True)
file = models.FileField(null=True,blank=True,upload_to=upload_location,)
created_date = models.DateTimeField(default=datetime.now)
hidden = models.BooleanField(default=False)
serialaizers.py:from rest_framework import serializers
from .models import FileIn, Directory
class FileInSerializer(serializers.ModelSerializer):
class Meta:
model = FileIn
fields = ('name', 'typeof', 'image', 'contents', 'file', 'created_date', 'hidden')
class DirectorySerializer(serializers.ModelSerializer):
files = FileInSerializer(many=True, read_only=True)
class Meta:
model = Directory
fields = ('book','name', 'description', 'created_date','hidden','files')
views.py:from django.shortcuts import render, redirect
from .serializers import DirectorySerializer
import json
...
def book(request,book_id):
context={}
...
context["dirs"]=json.dumps(DirectorySerializer().data)
...
return render(request,"book.html",context)
Прошу, помогите мне!