"没有这样的专栏"删除Django管理员中的记录时出错

时间:2013-06-15 20:07:45

标签: python django python-2.5 django-1.4

我的Django项目中有以下模型(models.py):

class Topic(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=140)

    def __unicode__(self):
        return self.title

class ArgumentElement(models.Model):
    id = models.AutoField(primary_key=True)
    contents = models.CharField(max_length=256)
    elementType = models.CharField(max_length=10)
    topic = models.ForeignKey(Topic, related_name='ArgumentElement_Topic')

    def __unicode__(self):
        return self.contents

class ArgumentElementConnection(models.Model):
    id = models.AutoField(primary_key=True)
    sourceId = models.ForeignKey(ArgumentElement, related_name='connection_source')
    targetId = models.ForeignKey(ArgumentElement, related_name='connection_target')
    topic = models.ForeignKey(Topic, related_name='ArgumentElementConnection_Topic')
    connectionType = models.CharField(max_length=7)

    def __unicode__(self):
        return self.id

我将所有三个模型添加到管理员(admin.py):

from django.contrib import admin
from history_site.opinions.models import ArgumentElement, ArgumentElementConnection, Topic

admin.site.register(ArgumentElement, admin.ModelAdmin)
admin.site.register(ArgumentElementConnection, admin.ModelAdmin)
admin.site.register(Topic, admin.ModelAdmin)

当我创建Topic的实例然后尝试在管理员中删除它时,我收到错误no such column: opinions_argumentelement.topic_id

我的models.py出了什么问题?

1 个答案:

答案 0 :(得分:1)

似乎使用sqllite3后端的AutoFields不是increment properly。您是否有理由将id = models.AutoField(primary_key=True)行包括在内?如果将其遗漏,将自动添加自动增量主键字段,并且更有可能正确创建。尝试删除该行并创建一个新的sqllite数据库文件。