2013-11-23 49 views
0

扩展字段我有两个tabels(Ingredient_Step和成分)在关系,你可以看到如下:返回在JSON

Models.Py

class Ingredient_Step(models.Model): 
    ingredient = models.ForeignKey(Ingredient) 
    Step = models.ForeignKey(Step)   
    def __unicode__(self): 
     return u'{}'.format(self.Step) 

class Ingredient(models.Model): 
    IngredientName = models.CharField(max_length=200,unique=True) 
    Picture = models.ImageField(upload_to='Ingredient')  
    def __unicode__(self): 
     return u'{}'.format(self.IngredientName) 

在一个功能,我需要一个序列化JSON对象从“Ingredient_step”返回的查询,但我需要发送来自“Ingredient”表的“IngredientName”字段。 我尝试使用“ingredient__IredredNameName”,但它失败。

Views.Py:

def IngredientByStep(request): 
    if request.is_ajax() and request.GET and 'id_Step' in request.GET: 
     if request.GET["id_Step"] != '': 
      IngStp = Ingredient_Step.objects.filter(Step =request.GET["id_Step"]) 
      return JSONResponse(serializers.serialize('json', IngStp, fields=('pk','ingredient__IngredientName'))) 

如何我可以调用从关系延伸领域?

感谢

回答

0

这Django的(和许多ORM的喜欢的SQLAlchemy)的“功能”被称为延迟加载,这意味着数据只从相关模型加载,如果你特别要求他们。在这种情况下,将您的IngStp构建为结果列表,并确保在序列化之前访问每个结果的属性。

下面是如何做到这一点的示例:Django: Include related models in JSON string?