Python 如何在django中从关系模型生成json对象
我有一个模型,它的所有字段都是外键。我想在我的model>Resources上进行一个关系查询,以便在我的示例中访问其他模型(如Riggs或Pluto)的属性,并生成一个json对象,将其发送到我的模板Python 如何在django中从关系模型生成json对象,python,json,django,Python,Json,Django,我有一个模型,它的所有字段都是外键。我想在我的model>Resources上进行一个关系查询,以便在我的示例中访问其他模型(如Riggs或Pluto)的属性,并生成一个json对象,将其发送到我的模板 class Resources (models.Model): tag = models.CharField(max_length=60) sans_id = models.ForeignKey(Sans, null=True,blank=True) riggs_id = m
class Resources (models.Model):
tag = models.CharField(max_length=60)
sans_id = models.ForeignKey(Sans, null=True,blank=True)
riggs_id = models.ForeignKey(Riggs, null=True,blank=True)
crocs_id = models.ForeignKey(Crocs, null=True,blank=True)
pluto_id = models.ForeignKey(Pluto, null=True, blank=True)
user_id = models.ForeignKey(Users, null=True, blank=True)
def __unicode__(self):
return u'%s' % (self.tag)
我希望通过以下方式访问关系对象的属性。但我不知道在不同的情况下需要哪些属性,所以我想要一个完整的json关系对象,这样我就可以访问任何给定的字段
for x in Resources.objects.all()
x.crocs_id.specifications
x.pluto_id.flag
x.pluto_id.settings
通过使用该方法,您可以跟踪所有外键关系,而无需指定任何参数
for x in Resources.objects.select_related():
# do something
但请注意,如果数据库表有很多行,这将导致复杂的查询。您可以创建类似dict的
b = {}
for a in Resource.objects.all():
for i in a:
b[str(i)] = i
最后,您可以使用json.dumps()作为
result=json.dump(b)并在任何地方传递
b将是表单的一个dict,带有带有模型名称的键,每个键对应于相关模型,因此您可以像这样访问它
b['crocs_id'](您的任何crocs属性)
我认为这应该奏效 您可以这样尝试:
resources= Resources.objects.values('tag', 'crocs_id__specifications', 'pluto_id__flag', 'pluto_id__settings')
json_data= json.dumps([item for item in resources])
非常感谢。但是,当我序列化并将其作为json发送回时,select_related()并没有提供完整的对象。我不能在相关模型上迭代,因为我只有FK值。