我试图扩展django应用的用户模型,但我一直收到错误:
/ admin / auth / user / 3 / 中的OperationalError
异常值:没有这样的列:subjects_subject.user_id
我的代码:
#subjects/models.py
from django.contrib.auth.models import User
from django.db import models
class Subject(models.Model):
user = models.OneToOneField(User)
description = models.CharField(max_length=100)
models.signals.post_save
#_admin/admin.py
from django.contrib.auth.models import User, Group
from django.contrib.auth.admin import UserAdmin, GroupAdmin
from .extended_admin import new_admin
from django.contrib import admin
from subjects.models import Subject
class SubjectInline(admin.StackedInline):
model = Subject
can_delete = False
verbose_name_plural = 'subject'
class UserAdmin(UserAdmin):
inlines = (SubjectInline, )
new_admin.register(User, UserAdmin)
new_admin.register(Group, GroupAdmin)
我几乎一字一句地复制了Django自己的documentation。真的很感激任何帮助!
修改
我还想说我已经投放了syndb
和flush
答案 0 :(得分:0)
我遇到了同样的问题,以下是我采取的解决问题的步骤。您没有指定您正在使用的数据库,但在我的情况下,我使用的是MySQL。从Django docs https://docs.djangoproject.com/en/1.8/topics/migrations/#mysql来看,似乎有时会创建表失败。我有一张叫做“管理”的桌子。并且一直未能检测到任何变化。
这是我做的:
总而言之,似乎没有直截了当的理由说明为什么会发生这种情况。我的试错法似乎已经解决了。
答案 1 :(得分:0)
你解决了这个问题吗?
我有同样的问题,经过不同的尝试,我解决了这个问题。我使用的是sqlite3。
好像第一次迁移时,数据库表有问题(我不知道这个问题是由什么造成的,所以你引发了错误:没有这样的列:subject_subject.user_id)
如果删除迁移目录并重新迁移,则无法解决此问题,因为Django会跟踪django_migrations表中所有已应用的迁移。迁移已伪造,因为该表已存在(可能带有过时的架构)所以我删除了django_migrations表中的所有行。
这是我做的:
1.删除我的django app中的迁移目录中的所有文件
2.使用python manage.py dbshell
,然后DELETE FROM django_migrations WHERE app='your-app-name
或DELETE FROM django_migrations WHERE ID='your-first-migrate
3.then python manage.py makemigrations
python manage.py migrate
成功!