2016-02-13 62 views
1

该模型将像如何将django模型对象和相关对象转换为字典列表?

class Customer(models.Model): 
    name = models.CharField(max_length=100) 

class Payment(models.Model): 
    amount = models.DecimalField(max_digits=4, decimal_places=2) 
    customer = models.ForeignKey(Customer, models.CASCADE) 

,我想作出这样

[ 
    { 
     'name': 'Tom', 
     'Payment': [{'amount': 10},{'amount': 20}] 
    }, 
    { 
     'name': 'Jack', 
     'Payment': [{'amount': 30},{'amount': 10}] 
    } 
] 

列表我试图用值,但它需要我知道的所有相关对象的字段名称是否有其他办法不知道字段名称做到这一点?

+0

那么,在你的例子中(至少某些)名称扮演特殊的角色。例如。 'customer'属性不打印,'payment'是类名的小写...因此,如何推广这种情况并不简单。 – Berci

+0

我的不良付款的P应该是大写。我希望转换器忽略外键字段,因为关于外键的信息已经存储在列表中(客户) – NorWay

+0

您想在哪里使用此列表?如果在某些API中,应该使用一些REST框架(即Django Rest Framework),并使用'serializers'将您的模型集(QuerySet)转换为序列化结构。 –

回答

1
q_customer = Customer.objects.all() 
L = [] 
for customer in q_custmer: 
    Dcustomer = {'name':customer.name, 
     'Payment':[{'amount',x.amount} for x in customer.payment_set] 
    L.append[D] 

# L now holds the list 
相关问题