【发布时间】:2017-11-26 20:26:58
【问题描述】:
我有两个通过外键链接的 Django 模型:
class Author(models.Model):
...
class Book(models.Model):
author = models.ForeignKey(Author)
请考虑下面的管理员示例(我想做相反的事情):
from django.contrib import admin
from my_app.models import Author, Book
class BookInline(admin.TabularInline):
model = Book
class AuthorAdmin(admin.ModelAdmin):
inlines = [
BookInline,
]
admin.site.register(Author, AuthorAdmin)
通过这个示例,我们可以在管理员中查看所有作者,并为每个作者查看他们的书籍。
现在,我想反其道而行之。在管理中对每本书都有一个条目,并在书籍详细信息上显示作者信息(它可以是只读的)。我尝试了以下解决方案,但显然它不起作用:
from django.contrib import admin
from my_app.models import Author, Book
class AuthorInline(admin.TabularInline):
model = Author
class BookAdmin(admin.ModelAdmin):
inlines = [
AuthorInline,
]
admin.site.register(Book, BookAdmin)
Django 报错:
<class 'my_app.admin.AuthorInline'>: (admin.E202) 'my_app.Author' has no ForeignKey to 'my_app.Book'.
你知道怎么做吗?
更多背景:
- Django 1.11
- 我想将 Book 和 Author 显示为完全只读,因此不会更改 Book 的外键(至少不会来自管理员)
【问题讨论】:
-
给你一个提示,我认为你需要指定关系的 backref 属性,以便以两种方式识别继承。恐怕我不确定语法,尤其是 Django 1.11,但希望能给你一个线索。
-
是的,我使用“related_name”属性,所以它可以从关系的双方使用:)
标签: python django django-admin