Python django值\u外键中所有字段的列表

Python django值\u外键中所有字段的列表,python,django,Python,Django,我有一个类具有另一个类的外键: 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) nam

我有一个类具有另一个类的外键:

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')
是:

但是也可以获取外键(MyMessage)对象的所有值吗?(我想在没有显式引用的情况下获取。-不像将“msg\u description”添加到MyEvent.objects.all().values('msg','event\u type'))

我想要的结果是:

[{'msg': 18L,'msg__name': 'dd','msg__description': 'kkk','event_type': 1L}, {'msg': 15L,'msg__name': 'dd','msg__description': 'kkk','event_type': 2L}]

您应该像这样向外键添加相关名称

class MyEvent(models.Model): 
    msg = models.ForeignKey(MyMessage,related_name='message')  
    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) 
    related_name=description = models.CharField(max_length=150, null=False, blank=False) 
然后您可以使用相关名称检索它。像这样:

objs=MyEvent.objects.all()
objs[0].message.all() # this is the Mymessage record

然后,您可以创建任意列表

您可以在“值”功能中引用外键属性:

MyEvent.objects.all().values('msg','event_type', 'msg__name', 'msg__description')

使用基于
MyMessage的列表理解,您可以创建一个字段名列表,在每个值前面加上
msg。然后只需使用
.values(*字段列表)
解压这些值即可


除此之外,这是不可能的
values()
只接受字段名作为位置参数,因此在调用
values()
之前必须隐式生成参数

是的,我知道,我想得到没有明确的参考。(如果将来外来对象会发生变化-添加更多字段-那么我也不想得到它们)
MyEvent.objects.all().values('msg','event_type', 'msg__name', 'msg__description')