基类django序列化程序缺少字段
我有几门课:基类django序列化程序缺少字段,django,serialization,Django,Serialization,我有几门课: class Correspondent(models.Model): title = models.CharField(max_length=60) class Subject(models.Model): title = models.CharField(max_length=60) class Letter(models.Model): correspondent = models.ForeignKey(Correspondent, on_
class Correspondent(models.Model):
title = models.CharField(max_length=60)
class Subject(models.Model):
title = models.CharField(max_length=60)
class Letter(models.Model):
correspondent = models.ForeignKey(Correspondent,
on_delete=models.SET_NULL, null=True)
subject = models.ForeignKey(Subject, on_delete=models.SET_NULL, null=True)
description = models.TextField(max_length=600, blank=True)
case_number = models.CharField(max_length=100, blank=True)
inventory_number = models.CharField(max_length=100, blank=True)
note = models.TextField(max_length=300, blank=True)
user = models.ForeignKey(User, editable=False, on_delete=models.SET_NULL, null=True)
date = models.DateField(default=datetime.date.today)
date_creation = models.DateTimeField(auto_now_add=True)
class IncomingLetter(Letter):
response_to = models.ForeignKey('OutgoingLetter', on_delete=models.SET_NULL, null=True, blank=True)
outgoing_number = models.CharField(max_length=120, blank=True)
incoming_number = models.CharField(max_length=120, blank=True)
class OutgoingLetter(Letter):
response_to = models.ForeignKey(IncomingLetter, on_delete=models.SET_NULL, null=True, blank=True)
outgoing_number = models.CharField(max_length=120, blank=True)
在一个视图中,我尝试使用序列化的B类实例发送json:
from django.http import JsonResponse
from django.core import serializers
from .models import IncomingLetter
def index(request):
....
some_data = IncomingLetter.objects.all()
serialized_data = serializers.serialize('json', some_data)
return JsonResponse(json.dumps(serialized_data), safe=False)
而响应遗漏了json中的所有字母字段。有没有办法不手动序列化它?
serialized_data=={“model”:“letters.incomingletter”,“pk”:4,“fields”:{“response_to”:3,“outing_number”:“12312321”,“innoming_number”:“123123”}
已解决#(不确定)
我编写了简单序列化程序,但不确定这是最干净的方式(许多不必要的字段,但很容易清理):
您能否更新您的问题以显示完整的导入;序列化程序定义(如果正在使用)、完整字段定义和其他详细信息。@ShubhoShaha它是一个常见的django.core序列化程序。编辑问题。也许我可以覆盖django core序列化程序?@rtindru更新。Letter
、IncomingLetter
和OutgoingLetter
都是具体的模型,还是Letter
是抽象模型?您能否共享问题中的序列化的_数据
repr?你也探索过DRF或Tastypie吗?它们为您提供了全面的、高度可配置的序列化程序和APIViews,使您能够以更结构化和可测试的方式进行同样的操作。
class LetterSerializer:
def __init__(self):
self.serialized_data = {}
def serialize(self, data):
for idx, instance in enumerate(data):
serialized_instance_data = {}
for key, value in instance.__dict__.items():
serialized_instance_data[key] = str(value)
self.serialized_data[idx] = serialized_instance_data
return self.serialized_data