我正在开发一个我认为非常标准的django站点,但是在让我的管理部分显示正确的字段时遇到了问题。
这是我的models.py:

class Tech(models.Model):
    name = models.CharField(max_length = 30)

class Project(models.Model):
    title = models.CharField(max_length = 50)
    techs = models.ManyToManyField(Tech)

换句话说,一个项目可以有不同的技术对象,不同的技术对象可以属于不同的项目(Project X是用Python和Django创建的,Project Y是C#和SQL Server创建的)
但是,管理站点不显示技术对象的任何UI。这是我的admin.py:
class TechInline(admin.TabularInline):
    model = Tech
    extra = 5

class ProjectAdmin(admin.ModelAdmin):
    fields = ['title']
    inlines = []
    list_display = ('title')

admin.site.register(Project, ProjectAdmin)

我试过将TechInline类添加到inlines列表中,但这会导致
<class 'home.projects.models.Tech'> has no ForeignKey to <class 'home.projects.models.Project'>

错误。还尝试将techs添加到fields列表中,但这会给出
没有这样的表:projects_project_techs
错误。我验证了,没有projects_project_techs表,但是有一个projects_tech表。在我的syncdb里有什么事情搞砸了吗?
如果有帮助的话,我将使用Sqlite作为数据库。

最佳答案

我试过将TechInline类添加到inlines列表中,但这会导致
未定义“TechInLine”
这是直接复制粘贴吗?看起来你只是犯了个错——试着TechInline而不是TechInLine
如果syncdb没有创建正确的表,可以手动创建。执行此命令:

python manage.py sqlreset <myapp>

并查找projects_project_techs表的定义。复制并粘贴到数据库的客户端。

08-17 10:00