Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用每个查询本身的函数注释每个查询_Python_Django - Fatal编程技术网

Python 用每个查询本身的函数注释每个查询

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

我需要使用模型方法对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.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)