I’m working on what I think is a pretty standard django site, but am having trouble getting my admin section to display the proper fields.
Here’s my 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)
In other words, a Project can have different Tech objects and different tech objects can belong to different Projects (Project X was created with Python and Django, Project Y was C# and SQL Server)
However, the admin site doesn’t display any UI for the Tech objects. Here’s my 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)
I’ve tried adding the TechInline class to the inlines list, but that causes a
<class 'home.projects.models.Tech'> has no ForeignKey to <class 'home.projects.models.Project'>
Error. Also tried adding techs to the fields list, but that gives a
no such table: projects_project_techs
Error. I verified, and there is no projects_project_techs table, but there is a projects_tech one. Did something perhaps get screwed up in my syncdb?
I am using Sqlite as my database if that helps.
Is that a straight copy-paste? It looks like you just made a typo — try
TechInlineinstead ofTechInLine.If your syncdb didn’t create the proper table, you can do it manually. Execute this command:
And look for the definition for the
projects_project_techstable. Copy and paste it into the client for your database.