检索相关的字段详细信息而不是id

时间:2014-06-01 10:20:33

标签: python django

我有一个这样的模型>

class Orders(models.Model):
 ....
 status = models.ForeignKey('Status')

class Status(models.Model):
 status_name = models.CharField(max_length=CHARFIELD_MAX_LEN)

在我看来,我这样做了一个查询>

all_orders = Orders.objects.all()
resp = serializers.serialize('json', all_orders)

但我需要的是获取状态名称而不是存储在订单表中的状态ID,该怎么做呢?

2 个答案:

答案 0 :(得分:1)

您可以使用natural keys.执行此操作您需要在natural_key()模型中定义Status方法并传递use_natural_foreign_keys=True

class Orders(models.Model):
   ....
   status = models.ForeignKey('Status')

class Status(models.Model):
    status_name = models.CharField(max_length=CHARFIELD_MAX_LEN)
    #def natural_key(self):
        return (self.status_name,)

然后序列化对象

all_orders = Orders.objects.all()
resp = serializers.serialize('json', all_orders, use_natural_foreign_keys=True)

答案 1 :(得分:0)

根据here

all_orders= Orders.objects.all().values_list('status__status_name')

它将获得状态名称列表