django values_list alle Felder im Fremdschlüssel
habe ich eine Klasse mit einem Fremdschlüssel zu einer anderen Klasse:
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)
das Ergebnis:
MyEvent.objects.all().values('msg','event_type')
ist:
[{'msg': 18L,'event_type': 1L}, {'msg': 15L,'event_type': 2L}]
aber ist es möglich, dass alle Werte des Fremdschlüssels (MyMessage) Objekt auch? ( ich will ohne ausdrückliche Bezugnahme. - nicht so wie das hinzufügen von 'msg__description' zu MyEvent.Objekte.alle().values('msg','event_type'))
dem Ergebnis, dass ich will, ist so etwas wie:
[{'msg': 18L,'msg__name': 'dd','msg__description': 'kkk','event_type': 1L}, {'msg': 15L,'msg__name': 'dd','msg__description': 'kkk','event_type': 2L}]
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie auf foreign-key-Attribute in Werte-Funktion:
Erstellen Sie eine Liste der Feldnamen, die mit
msg__
vorangestellt, um jeden Wert mit list-comprehension basiert aufMyMessage._meta
. Dann einfach entpacken Sie die Werte mit.values(*list_of_fields)
.Andere als das, es ist nicht möglich.
values()
akzeptiert nur Feldnamen als positionale Argumente, so werden Sie implizit erzeugen die Argumente vor dem Aufrufvalues()
.Sollten Sie einen entsprechenden Namen für fremde Schlüssel, wie diese
Dann können Sie es abrufen mit entsprechenden Namen. wie diese:
dann können Sie Ihre Liste, was Sie gerne