Python 用每个查询本身的函数注释每个查询
我需要使用模型方法对queryset中的每个查询进行注释:Python 用每个查询本身的函数注释每个查询,python,django,Python,Django,我需要使用模型方法对queryset中的每个查询进行注释: class myModel(models.Model): ... def myModel_foo(self): .... return myModel_foo 我需要类似于.annotate(myModel\u foo=myModel.myModel\u foo())的东西。问题是myModel\u foo()需要self。我尝试在queryset上迭代并使用query.annotat
class myModel(models.Model):
...
def myModel_foo(self):
....
return myModel_foo
我需要类似于.annotate(myModel\u foo=myModel.myModel\u foo())的东西。问题是myModel\u foo()
需要self
。我尝试在queryset上迭代并使用query.annotate(myModel\u foo=myModel.myModel\u foo(self))
,但我发现对象没有属性“annotate”
错误。正确的方法是什么
更新
好的,想法是这样的:我有两个单对一关系的模型
class myModel1(models.Model):
fk = ForeignKey(myModel2)
status = ChoiceField
class myModel2(models.Model):
def get_status(self):
# query all objects from myModel1, get status of the last one and
# return it
return get_status
然后我想通过ajax
调用发送一个包含status
的查询集
qs = MyModel2.objects.all()
qs_json = serializers.serialize('json', qs)
return HttpResponse(qs_json, content_type='application/json')
我如何才能在模板中访问它,比如qs\u json[0]。获取\u status
?只需向模型添加属性,而不使用“注释”。
比如:
类MyModel(models.Model):
@财产
def foo(self):
....
返回self.bar()
但是,如果条
进行额外查询,请小心N+1查询问题。你可以描述你的具体情况,我会帮你的
更新:
目前还不清楚是否有额外的疑问。如果没有,您仍然可以使用该属性。
您只需要如下所示的正确序列化程序:
从rest\u框架导入序列化程序
类MyModelSerializer(serializers.ModelSerializer):
foo=serializers.CharField(只读=True)
类元:
model=MyModel
字段=[
#其他领域
“福”
]
除非调用函数,否则不能使用函数调用进行注释,例如,结果是一个类似于Sum('field')
的表达式。如果定义一个具体示例,可能会更有帮助。我在main post update中描述了它。我在main post中描述了它
return Response(MyModelSerializer(MyModel.objects.all(), many=True).data)