返回JSON中的扩展字段

时间:2013-11-23 13:10:42

标签: python django django-views json

我在关系中有两个表格(Ingredient_Step和Ingredient),如下所示:

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)

在函数中,我需要从“Ingredient_step”返回的查询中序列化JSON对象,但是我需要发送“IngredientName”字段,该字段来自“Ingredient”表。 我尝试使用“ingredient__IngredientName”但它失败了。

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')))

我如何从关系中调用extends field?

由于

1 个答案:

答案 0 :(得分:0)

Django的这个“特性”(以及许多ORM就像SQLAlchemy)被称为Lazy Loading,这意味着如果您特别要求数据,则只从相关模型加载数据。在这种情况下,将IngStp构建为结果列表,并确保在序列化之前访问每个结果的属性。

以下是如何执行此操作的示例:Django: Include related models in JSON string?