Python 是否可以将其他字段添加到所有查询集中?德扬戈
例如,我在模型中有一个Python 是否可以将其他字段添加到所有查询集中?德扬戈,python,django,django-models,lambda,django-queryset,Python,Django,Django Models,Lambda,Django Queryset,例如,我在模型中有一个querysets 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
querysets
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)
假设我有一个查询集来获取ModelA
实际上,我想在所有查询集中添加一个字段,例如名为age\u gap
的字段,它是模型本身的def age
,因此每个查询集还将有一个名为gap\u gap
的额外字段,而不仅仅是name、ageMin、ageMax
我尝试了下面的方法,但没有成功
all_q = ModelA.objects.filter()
qs = map(lambda x: x.update({'age_gap': x.age()}), all_q)
上述方法不起作用
所以我想试试类似的东西
对于所有_q中的q:
q['age_gap']=q.age()
当然,这也给了我错误
有人能帮我一个忙吗
提前感谢您可以使用
@property
或@cached\u property
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()
您可以使用
@property
或@cached\u property
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()
当你想引用年龄函数时,只使用年龄函数有什么不对吗?当你想引用年龄函数时,只使用年龄函数有什么不对吗?