Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.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 Django IntegerField返回ExpressionNode_Python_Django_Postgresql_Python 2.7_Django Models - Fatal编程技术网

Python Django IntegerField返回ExpressionNode

Python Django IntegerField返回ExpressionNode,python,django,postgresql,python-2.7,django-models,Python,Django,Postgresql,Python 2.7,Django Models,我得到了一个包含两个计数器的模型: class MyObject(models.Model): ... student_c = models.PositiveIntegerField(default=0, blank=True, null=True) company_c = models.PositiveIntegerField(default=0, blank=True, null=True) def total_followers(s

我得到了一个包含两个计数器的模型:

class MyObject(models.Model): ... student_c = models.PositiveIntegerField(default=0, blank=True, null=True) company_c = models.PositiveIntegerField(default=0, blank=True, null=True) def total_followers(self): return self.student_c + self.company_c 我试图将PositiveIntegerField更改为IntegerField,并用另一个名称重命名该字段,但仍然得到相同的结果?我破坏了数据库并重建了很多次

在我的模板中,我可以看到这个
:(+:(默认设置),1)

事实上,我正在尝试这样做一个原子增量:

project = get_object_or_404(Project, pk=kwargs['pk'])
project.student_c = F('student_c') + 1
project.save(update_fields=['student_c']) or even just project.save()
这就是问题的根源。我看了看,发现了相同的代码:

我做错了什么

任何帮助都将不胜感激


谢谢

我不知道这是否与您的问题相似,但也许可以帮助您

也许你需要打电话。在你的视图中,先保存再打电话给total_followers

例如:

import model.MyObject

myObj = MyObject.objects.create(....)
myObj.save()

myObj.total_followers()

我不确定您是否正确使用了F()对象。你试过这么做吗

Projects.objects.filter(pk=kwargs['pk']).update(student_c=F('student_c') + 1)
这将取代这三条线。您也可以在第二行中尝试以下内容:

project.student_c = project.student_c + 1

返回ExpressionNode的代码是什么?我在我的“total_followers”方法中放置了一个调试跟踪,当我调用“self.company_c”时,我得到了一个整数,但“self.student_c”返回一个ExpressionNode对象(我检查了我的sql模式,两个字段都相同)。谢谢,链接与我的问题有关,我以前读过,但第一次没听懂。这很有帮助。但是我的问题没有解决。你还有什么问题?是重命名字段吗?我知道第一个字段工作正常,但这是在我以前使用get_object_或_404指令在视图中获取对象时进行的另一个查询。我不明白为什么不能在我的“项目”变量上增加一个原子增量。事实上,我正在寻找一个优雅的解决方案来查询我的对象,如果找不到,则会抛出404,然后对其执行原子增量。你的第二个建议不是原子增量(我实际上使用它)?事实上,你可能是对的,而我想要的可能只是我的方式不可能。它是否正确地更新了数据库?问题是运行代码后,
project.student\u c
是一个
ExpressionNode
?您可能需要重新查询数据库以获取更新的计数器。或者你可以做我的第二个建议,并将其包装成一个交易。我选择第一个,我认为这是对我最好的方式。再次感谢你的帮助。
project.student_c = project.student_c + 1