python - Django 管理站点不显示 ManyToManyField 关系

标签 python django

我正在开发一个我认为非常标准的 Django 站点,但我无法让我的管理部分显示正确的字段。

这是我的模型.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)

换句话说,一个项目可以有不同的技术对象,不同的技术对象可以属于不同的项目(项目X是用Python和Django创建的,项目Y是C#和SQL Server)

但是,管理站点不显示任何 Tech 对象的 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 列表中,但这给出了

no such table: projects_project_techs

错误。我验证了,没有projects_project_techs表,但是有projects_tech表。是不是我的 syncdb 出了什么问题?

如果有帮助,我正在使用 Sqlite 作为我的数据库。

最佳答案

I've tried adding the TechInline class to the inlines list, but that causes a

'TechInLine' not defined

那是直接复制粘贴吗?看起来您只是打错了字 - 请尝试使用 TechInline 而不是 TechInLine

如果您的 syncdb 没有创建正确的表,您可以手动创建。执行这条命令:

python manage.py sqlreset <myapp>

然后查找 projects_project_techs 表的定义。将其复制并粘贴到您的数据库的客户端中。

关于python - Django 管理站点不显示 ManyToManyField 关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/160905/

相关文章:

python - 如何在 web2py 的 post 请求中拥有一系列单选按钮

python - 如何在 Python 中检查文件大小?

Python 迷你王国 : Change Value of Node

python - Django 在模板中显示 render_to_response

javascript - 保存按钮上的确认按钮,如删除已经有

python - 伯克利咖啡命令行界面

python - plotly 破折号: how to draw y axis in different ticks?

Javascript 创建和添加 div 与克隆、修改和添加 div

django 按出现次数排序查询结果

python - 返回十六进制 UUID 作为 Django 模型字符字段的默认值