我有一个班有另一个班的外键:
class MyEvent(models.Model):
msg = models.ForeignKey(MyMessage)
event_type = models.IntegerField(choices=EVENTS_TYPES)
class MyMessage(models.Model):
notification = models.IntegerField(choices=EVENTS_TYPES2)
name = models.CharField(max_length=20, null=False, blank=False)
description = models.CharField(max_length=150, null=False, blank=False)
结果是:
MyEvent.objects.all().values('msg','event_type')
是:
[{'msg': 18L,'event_type': 1L}, {'msg': 15L,'event_type': 2L}]
但是,是否也可以获取外键(MyMessage)对象的所有值?(我想得到没有明确的参考。-不像在MyEvent.objects.all().values('msg','event_type')中添加'msg_udescription')
我想要的结果是:
[{'msg': 18L,'msg__name': 'dd','msg__description': 'kkk','event_type': 1L}, {'msg': 15L,'msg__name': 'dd','msg__description': 'kkk','event_type': 2L}]
您应该像这样将相关名称添加到外键
然后可以用相关名称检索它。像这样:
然后你可以创建你喜欢的列表
使用基于
MyMessage._meta
的列表理解,可以创建一个字段名列表,每个值前面都有msg__
。然后简单地使用.values(*list_of_fields)
解压这些值。除此之外,这是不可能的。
values()
只接受字段名作为位置参数,因此在调用values()
之前必须隐式生成参数。可以在值函数中引用外键属性:
相关问题 更多 >
编程相关推荐