2013-06-15 3 views
0

я следующая модель (models.py) в моем проекте Django:«Нет такой столбец» Ошибка при удалении записи в Django администратора

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, а затем попытаюсь удалить его в Admin, я получаю сообщение об ошибке no such column: opinions_argumentelement.topic_id.

Что случилось с моим models.py?

+0

Вы также создаете экземпляр, используя Admin? И это нормально? – foobarbecue

+0

Да, создание кажется сработавшим (я получаю сообщение об успешном завершении, и вновь созданный экземпляр появляется в списке). –

+0

Какой у вас двигатель БД? Поддерживает ли он ограничения ссылочной целостности? –

ответ

1

Кажется, что AutoFields, использующий бэкэнд sqllite3, не increment properly. Есть ли причина, по которой вы включаете строку id = models.AutoField(primary_key=True)? Если вы оставите это, автоматически добавится поле первичного ключа с автоматическим приращением и, скорее всего, будет правильно создано. Попробуйте удалить эту строку и создать новый файл базы данных sqllite.