【问题标题】:Send JsonResponse with related objects发送带有相关对象的 JsonResponse
【发布时间】:2020-07-11 21:27:18
【问题描述】:

我想发送带有相关对象的 JsonResponse。这是我的游乐场。

我这样做

def get_stocks(qty=9):
  return Stock.objects.values()[:9]

# Returning stocks
stocks = api_services.get_stocks()
return JsonResponse(list(stocks), safe=False)

我的模型是这样的

class Sector(models.Model):
  name = models.CharField(max_length=200, null=True, blank=True)
  original_name = models.CharField(max_length=200)
  slug = models.CharField(max_length=200) 

class Industry(models.Model):
  name = models.CharField(max_length=200, null=True, blank=True)
  original_name = models.CharField(max_length=200)
  slug = models.CharField(max_length=200)   

class Stock(models.Model):
  name = models.CharField(max_length=200)
  ticker = models.CharField(max_length=200, unique=True)
  logo = models.CharField(max_length=200, null=True, blank=True)
  website = models.CharField(max_length=200, null=True, blank=True)
  sector = models.ForeignKey(Sector, on_delete=models.CASCADE, null=True)  
  industry = models.ForeignKey(Industry, on_delete=models.CASCADE, null=True)  

如何获取包含相关对象的 json?现在我明白了

0   Object { id: 1, name: "Tesla", ticker: "TSLA", … }
id  1
name    "Tesla"
ticker  "TSLA"
logo    null
website "http://www.tesla.com"
sector_id   1
industry_id 1

我也需要了解部门和行业

【问题讨论】:

    标签: python json django


    【解决方案1】:

    您需要在 Stock 模型中查找给定 ID 的模型条目。您可以在 get_stocks 方法中执行此操作。另一种选择是使用 Stock serializer。 例如:

    def get_stocks(qty=9):
       stocks = Stock.objects.all()[:qty]
       for stock in stocks:
          try:
             stock.sector = Sector.objects.get(id=stock.sector)
          except Sector.DoesNotExist:
             pass
         
          try:
             stock.industry = Industry.objects.get(id=stock.industry)
          except Industry.DoesNotExist:
             pass
    
       return stocks
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多