错误:django.db.utils.OperationalError:无法识别的令牌:“:”

问题描述 投票:0回答:1

当我尝试保存一些 Django 模型时,例如这个:

class UserProfile(models.Model):
    address = models.CharField(max_length=100, blank=True)
    payment_type = models.CharField(max_length=20, default="Undefined")
    total_no_of_products = models.IntegerField(default=0)
    total_paid = models.FloatField(default=0)
    ids = ArrayField(models.IntegerField(null=True, blank=True), default=list)
    user = models.OneToOneField(NewUser, on_delete=models.CASCADE, default=None)
    metadata = models.ManyToManyField(Metadata)

    def __str__(self):
        return f"{self.user.user_name}"

我收到以下错误的回报:

  Error: django.db.utils.OperationalError: unrecognized token: ":"

我试图找出导致这个问题的原因,我发现当我注释掉这一行时

ids = ArrayField(models.IntegerField(null=True, blank=True), default=list)

问题消失。有人知道这是为什么吗?

目前我正在使用 Django 5.0 和默认的 sqlite3 db。

Tnx!

python django postgresql sqlite
1个回答
0
投票

我通过更改 Postgres 的 sqllit3.db 解决了这个问题。

问题的原因基本上是ArrayField。 Sqllite3无法正确处理该字段。我没有深入挖掘来找出原因。

基本上我的模型中的这条线造成了所有破坏:

ids = ArrayField(models.IntegerField(null=True, blank=True), default=list)

从 sqlite 迁移到 Posgres 解决了整个问题。

© www.soinside.com 2019 - 2024. All rights reserved.