Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django中从关系模型生成json对象_Python_Json_Django - Fatal编程技术网

Python 如何在django中从关系模型生成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

我有一个模型,它的所有字段都是外键。我想在我的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 = 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值。