当我尝试保存一些 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!
我通过更改 Postgres 的 sqllit3.db 解决了这个问题。
问题的原因基本上是ArrayField。 Sqllite3无法正确处理该字段。我没有深入挖掘来找出原因。
基本上我的模型中的这条线造成了所有破坏:
ids = ArrayField(models.IntegerField(null=True, blank=True), default=list)
从 sqlite 迁移到 Posgres 解决了整个问题。