我正在尝试为我的 Django REST 框架创建一个用户模型,但遗憾的是,我遇到了一些意想不到的困难:当我运行“python manage.py makemigrations”时,一切正常,但是,当我尝试运行迁移时,我遇到了这个错误'return Database.Cursor.execute(self, query) django.db.utils.OperationalError: near "None": syntax error'。我已经尝试更改 models.py 中的代码,但它仍然产生相同的结果,即使我将用户模型类设置为只有一个 id 字段。我正在使用 Django 版本 1.11.17 和 drf 版本 3.9.0模型.py:class User(models.Model): id = models.AutoField(primary_key=True) email = models.CharField(unique=True, null=False, max_length=200) phone = models.IntegerField(unique=True, null=False) first_name = models.CharField(null=False, max_length=200) last_name = models.CharField(null=False, max_length=200) is_active = models.BooleanField(_('active'), default=False) last_seen = models.DateTimeField(auto_now=True, null=True) updated_at = models.DateTimeField(auto_now=True, null=True) created_at = models.DateTimeField(auto_now_add=True, null=True) avatar = models.CharField(null=True)迁移/0001_initial.py:class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='User', fields=[ ('id', models.AutoField(primary_key=True, serialize=False)), ('email', models.CharField(max_length=200, unique=True)), ('phone', models.IntegerField(unique=True)), ('first_name', models.CharField(max_length=200)), ('last_name', models.CharField(max_length=200)), ('last_seen', models.DateTimeField(auto_now=True, null=True)), ('updated_at', models.DateTimeField(auto_now=True, null=True)), ('created_at', models.DateTimeField(auto_now_add=True, null=True)), ('avatar', models.CharField(null=True)), ], ),]
1 回答
慕尼黑的夜晚无繁华
TA贡献1864条经验 获得超6个赞
问题最终是我没有为 avatar 字段指定 max_length 因此由 django 生成的结果查询是
CREATE TABLE "user" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "email" varchar(200) NOT NULL UNIQUE, "phone" integer NOT NULL UNIQUE, "first_name" varchar(200) NOT NULL, "last_name" varchar(200) NOT NULL, "is_active" bool NOT NULL, "last_seen" datetime NULL, "updated_at" datetime NULL, "created_at" datetime NULL, "avatar" varchar(None) NULL);
并且 varchar(None) 破坏了语法。你知道的越多。
添加回答
举报
0/150
提交
取消