【问题标题】:Returning extended fields in JSON返回 JSON 中的扩展字段
【发布时间】:2013-11-23 13:10:42
【问题描述】:

我有两个表(Ingredient_Step 和 Ingredient),如下所示:

模型.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 对象,但我需要发送来自“Ingredient”表的“IngredientName”字段。 我尝试使用“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')))

如何从关系中调用扩展字段?

谢谢

【问题讨论】:

    标签: python django django-views json


    【解决方案1】:

    Django(以及许多 ORM 之类的 SQLAlchemy)的这个“功能”称为延迟加载,这意味着只有在您特别要求时才会从相关模型中加载数据。在这种情况下,将 IngStp 构建为结果列表,并确保在序列化之前访问每个结果的属性。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-10-20
      • 2011-06-08
      • 1970-01-01
      • 2013-05-02
      • 1970-01-01
      • 1970-01-01
      • 2020-11-17
      相关资源
      最近更新 更多