Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
Django psycopg2游标不存在_Django_Postgresql_Psycopg2 - Fatal编程技术网

Django psycopg2游标不存在

Django psycopg2游标不存在,django,postgresql,psycopg2,Django,Postgresql,Psycopg2,使用Postgres特定的ArrayField,我试图对ArrayFields的长度求和 这些查询在shell中可以正常工作,但在本地dev服务器上不能。我已经将错误缩小到第19行的最后一个注释:“annotate(total=Sum(“length”)”,因为它没有最后的.annotate(…).values(…)部分运行良好 我还运行了“makemigrations”和“migrate”,以便更新数据库 错误: psycopg2.errors.InvalidCursorName:光标“\u

使用Postgres特定的ArrayField,我试图对ArrayFields的长度求和

这些查询在shell中可以正常工作,但在本地dev服务器上不能。我已经将错误缩小到第19行的最后一个注释:“annotate(total=Sum(“length”)”,因为它没有最后的.annotate(…).values(…)部分运行良好

我还运行了“makemigrations”和“migrate”,以便更新数据库

错误:

psycopg2.errors.InvalidCursorName:光标“\u django\u curs\u 19180\u 1”不存在

光标“\u django\u curs\u 19180\u 1”不存在

调试输出:

('SELECT "product_design_assembledfromcomponent"."id", '
'"product_design_assembledfromcomponent"."assembled_id_id", '
'"product_design_assembledfromcomponent"."quantity", '
'"product_design_assembledfromcomponent"."designed_with_id_id", '
'"product_design_assembledfromcomponent"."position", '
'"product_design_assembledfromcomponent"."description", '
'"product_design_assembledfromcomponent"."assembled_inhouse", (SELECT '
'SUM(ARRAY_LENGTH(U0."position")) AS "total" FROM "product_design_multistep" '
'U0 WHERE U0."assembly_id" = ("product_design_assembledfromcomponent"."id") '
'GROUP BY U0."assembly_id"  LIMIT 1) AS "taken" FROM '
'"product_design_assembledfromcomponent" WHERE '
'"product_design_assembledfromcomponent"."assembled_id_id" = %s')

The above exception (function array_length(character varying[]) does not exist LINE 1:     ...edfromcomponent"."assembled_inhouse", (SELECT SUM(ARRAY_LENG... ^ HINT: No function matches the given name and argument types. You might need to add explicit type casts. ) was the direct cause of the following exception: 
代码:

提前感谢您的帮助

编辑:添加的型号

1 class MultiStep(models.Model):
2    step = models.ForeignKey(ProductionStep, on_delete=models.PROTECT,    null=True, blank=True)
3    assembly = models.ForeignKey(AssembledFromComponent, on_delete=models.PROTECT, null=True, blank=True)
4    quantity = models.DecimalField(decimal_places=6, max_digits=12, default=1)
5    position = ArrayField(
         models.CharField(max_length=10, blank=True),
         size=40,
         blank=True,
         null=True,
         help_text="A subset of the set of positions defined for an assembly"
)

6 class AssembledFromComponent(models.Model):
7     # ID of the new component
8     assembled_id = models.ForeignKey(
9         DesignedComponent,
10        on_delete=models.PROTECT,
11        related_name='assembled_id'
12    )
13    quantity = models.DecimalField(decimal_places=6, max_digits=12)
14    # ID of a component used to make a new component
15    designed_with_id = models.ForeignKey(
16        DesignedComponent,
17        on_delete=models.PROTECT,
18        related_name='designed_with_id'
19    )
20    position = models.CharField(
21        max_length=200,
22        blank=True,
23        null=True,
24        help_text="Enter a single position or a comma separated list of positions with length = quantity"
25    )
26    description = models.TextField(
27        max_length=1000,
28        help_text='Enter a brief description of the assembly',
29        null=True,
30        blank=True,
31    )
32    assembled_inhouse = models.BooleanField(default=False)
Edit2:我将改为使MultiStep.position字段原子化,而不是使用ArrayField,这使问题变得不那么复杂


我仍然认为最初的问题很奇怪,因为在我看来,ArrayLength是不可求和的。

从错误中可以看出,您的位置参数不是array类型,而是char类型

(function array_length(**character varying[]**) does not exist 

函数只将数组类型作为参数

位置字段是什么,而且了解更多关于模型的信息也会很有好处。似乎获取数组长度不是问题,而是求数组长度的和。至少代码运行良好,在不求和时给出数组长度。
(function array_length(**character varying[]**) does not exist