dosya97
@dosya97
Fullstack web-developer

Как распарсить вложенный объект во view в json?

Приветствую всех! Столкнулся с такой проблемой: У меня есть моделька которая связана по внешнему ключу к другому референсу. И вот мне нужно во вью в 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)

Прошу, помогите мне!
  • Вопрос задан
  • 543 просмотра
Решения вопроса 1
dosya97
@dosya97 Автор вопроса
Fullstack web-developer
...
context["dirs"]=json.dumps(DirectorySerializer(Directory.objects.filter(book=Book.objects.get(id=book_id)).order_by("created_date"),many=True, read_only = True).data)
...
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы