Django:操作错误,找不到此列

2 投票
1 回答
4476 浏览
提问于 2025-04-18 01:51

我对数据库完全是个新手(甚至可以说一无所知),而且对Django也不太了解,不过我对Python很熟悉。我正在使用Sqlite作为我的数据库软件。每次我试图从Django管理面板添加新用户时,总是会出现一个

OperationalError at /admin/auth/user/add/ 
table dashboard_member has no column named user_id

错误。以下是我的models.py:

from django.db import models    # importing database library from Django   
from django.contrib.auth.models import User

class Member(models.Model):    # table for members' info

    DEPARTMENTS = (
        ('Quiz', 'Quizzing'),
        ('Design', 'Design'),
        ('Elec', 'Electronics'),
        ('Prog', 'Programming'),
    )

    CLASSES = (                 # tuples to store choices for each field
        (9, '9'),               # (actual value to be stored, human-readable value),
        (10, '10'),
        (11, '11'),
        (12, '12'),
    )

    DESIGNATIONS = (
        ('Mem', 'Member'),      
        ('ExecMem', 'Executive Member'),
        ('VicePres', 'Vice President'),
        ('Pres', 'President'),
    )

    user = models.OneToOneField(User)   # to inherit the properties of the base User class in Django, like first_name, last_name, password, username, etc.
    schoolClass = models.IntegerField('Class', choices = CLASSES)
    desig = models.CharField('Designation', max_length = 20, choices = DESIGNATIONS)
    dept1 = models.CharField('Department 1', max_length = 20, choices = DEPARTMENTS)
    dept2 = models.CharField('Department 2', max_length = 20, choices = DEPARTMENTS)
    #proPic = models.ImageField('Profile Picture', upload_to = 'profile_pics')

    def __unicode__(self):
        return self.user.username

class DepInfo(models.Model):        # table for info specific to each department

    DEPARTMENTS = (
        ('Quiz', 'Quizzing'),
        ('Design', 'Design'),
        ('Elec', 'Electronics'),
        ('Prog', 'Programming'),
    )

    dept = models.CharField('Department', max_length = 20, choices = DEPARTMENTS)
    agenda = models.TextField('Agenda', max_length = 1000)      # editable text fields
    workMat = models.TextField('Working Material', max_length = 1000)
    furRead = models.TextField('Further Reading', max_length = 1000)

这是我的admin.py:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.admin import User

from dashboard.models import Member, DepInfo

class MemberInline(admin.StackedInline):
    model = Member
    can_delete = False
    verbose_name_plural = 'member'

class UserAdmin(UserAdmin):
    inlines = (MemberInline, )

admin.site.unregister(User)
admin.site.register(User, UserAdmin)
#admin.site.register(Member)
admin.site.register(DepInfo)

# Register your models here.

问题是,我根本没有定义任何叫user_id的列,而且在我创建表的时候,也没有显示出叫user_id的列。有人能帮我解决这个问题吗?

1 个回答

0

手动删除在 myapp/migrations 文件夹下的 .py 迁移文件。这些文件的格式是:init.0001.py 和 0002_migrations.py。把所有这种类型的文件都删除掉,然后执行以下命令:

$: python manage.py makemigrations myapp

$: python manage.py migrate myapp 0001

$: python manage.py sqlmigrate myapp 0001

撰写回答