DatabaseError位于/admin/app1/book/没有这样的列:app1\u book.related\u id

2024-07-03 07:26:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我为管理员写了一个Django程序。但结果发现外键出了问题,我查不出来

这是我的admin.py和views.py:

from django.contrib import admin
from app1.models import *

class BookAdmin(admin.ModelAdmin):
    list_display = ('name','auther','pages')
    search_fields = ['name']

admin.site.register(Book,BookAdmin)
admin.site.register(RelatedBook)

视图.py:

from django.db import models
CATEGORY_CHOICES = (
    ('s','Science'),
    ('l','Literature'),
    ('e','else'),

)

class Book(models.Model):
    name = models.CharField(max_length = 100)
    auther = models.CharField(max_length= 100)
    pages = models.IntegerField()
    related = models.ForeignKey('RelatedBook')

    def __unicode__(self):
            return self.name

class RelatedBook(models.Model):
    name = models.CharField(max_length = 100)
    category = models.CharField(max_length = 1, choices = CATEGORY_CHOICES)
    description = models.CharField(max_length = 1000)
    def __unicode__(self):
            return self.name

Tags: djangonamefrompyimportselfadminmodels
1条回答
网友
1楼 · 发布于 2024-07-03 07:26:14

如果在第一次创建Book模型之后添加了相关列,那么syncdb将不会创建它,因为它不处理迁移

如果有重要数据,则需要手动添加列。如何做到这一点取决于您使用的是哪个数据库

如果您没有任何需要保留的数据,那么删除Book表并重新运行syncb可能是最简单的

模式迁移将是即将发布的django1.7版本的一部分。对于django1.6和更早版本,您可能希望在将来探索迁移工具south

相关问题 更多 >