我的Django项目中有以下模型。
class State(models.Model):
state_name = models.CharField(max_length=30, unique=True)
state_code = models.CharField(max_length=30, unique=True)
class District(models.Model):
district_name = models.CharField(max_length=50)
district_code = models.CharField(max_length=30)
state_obj = models.ForeignKey(State)
我想填写区域列表以及state_obj并将其发送到前端。 我正在使用序列化并尝试
serializers.serialize("json", District.objects.all())
获得以下格式的结果
{"fields": {"state_obj": 23, "district_name": "NANDURBAR", "district_code": "NANDURBAR"}, "model": "adaxial_core.district", "pk": 665}
是否可以在django中获取state_obj整个对象而不是id。
我期待的输出就像。
{"fields": {"state_obj": {id:1,state_name:'X',state_code:'Y'}, "district_name": "NANDURBAR", "district_code": "NANDURBAR"}, "model": "adaxial_core.district", "pk": 665}
想要尝试在不对结果集应用额外循环的情况下执行此操作。
有没有办法做同样的事情
答案 0 :(得分:0)
我不认为这是可能的,而且最近才在Django ticket中解决(并拒绝)。如果依赖项是您的用例的选项,那么使用Django Rest Framework(或tastypie,我从未使用过)的序列化程序可能没问题。否则我想你会在代码中做到这一点。
以下是关于该问题的last comment的引用:
除非是序列化API的更基本的解决方案, 旨在使其通常可用于Web API我可扩展 没有看到推动序列化器范围的任何价值 现在站起来。现在它们的用例应该是夹具 加载和保存,没有别的。那里有更好的工具 通常可扩展的序列化方案(REST框架, tastypie等。)
Django的select_related()
有助于避免额外的SQL命中,所以至少会有一点性能提升。