2017-12-12 5 views
0

Ich habe eine querysets in einem Modell zum Beispielmöglich, ein zusätzliches Feld in alle Abfragegruppen hinzuzufügen? django

class ModelA(models.Model): 
    name = models.Charfield(max_length=256) 
    ageMin = models.IntegerField(null=True, blank=True) 
    ageMax = models.IntegerField(null=True, blank=True) 

    def age(self): 
     low = self.ageMin 
     high = self.ageMax 
     if low and high: 
      return str(low) + ' - ' + str(high) 
     if low: 
      return str(low) 
     if high: 
     return str(high) 

lassen Sie uns sagen, dass ich eine queryset haben alle Rückkehr von ModelA Ich möchte tatsächlich bekommen ein Feld in alle queryset wie ein Feld age_gap namens hinzuzufügen, die ist die def age aus dem Modell selbst, so dass jedes Queryset auch ein zusätzliches Feld mit dem Namen 10 nicht nur name, ageMin, ageMax

Ich habe versucht, etwas wie folgt, aber nicht funktioniert aber.

all_q = ModelA.objects.filter() 
qs = map(lambda x: x.update({'age_gap': x.age()}), all_q) 

die oben nicht

so dachte ich, etwas zu versuchen, wie für q in all_q funktioniert: q [ 'age_gap'] = Q.AGE()

natürlich dieses gibt mir auch Fehler

Kann mir bitte jemand eine Hand geben, wie das gemacht werden kann?

Vielen Dank im Voraus

+0

etwas Es falsch mit genau der Alten Funktion verwenden, wenn Sie es verweisen mögen? – kevswanberg

Antwort

2

können Sie @property oder @cached_property verwenden

class ModelA(models.Model): 
    name = models.Charfield(max_length=256) 
    ageMin = models.IntegerField(null=True, blank=True) 
    ageMax = models.IntegerField(null=True, blank=True) 

    def age(self): 
     low = self.ageMin 
     high = self.ageMax 
     if low and high: 
      return str(low) + ' - ' + str(high) 
     if low: 
      return str(low) 
     if high: 
     return str(high) 

    @property 
    def age_gap(self): 
     return self.age() 
Verwandte Themen