我必须在不同的模型中上课。 第一个,名为Audiobook
from django.db import models
from labels.models import Label
class Audiobook(models.Model):
"""the audiobook object"""
title = models.TextField()
content = models.TextField()
cover = models.FilePathField()
playtime = models.TextField()
moneyLink = models.TextField()
status = models.BooleanField(default=False)
label = models.ForeignKey(Label)
第二个,名为Label
from django.db import models
class Label(models.Model):
"""the label object"""
name = models.TextField()
description = models.TextField()
status = models.BooleanField(default=False)
在有声读物中,我在Label对象上有一个ForeignKey。
现在是管理类。
audiobook_admin:
from audiobooks.models import Audiobook
from labels.models import Label
from django.contrib import admin
class LabelInline(admin.TabularInline):
model = Label
class AudiobookAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['title']}),
(None, {'fields': ['content']}),
(None, {'fields': ['cover']}),
(None, {'fields': ['playtime']}),
(None, {'fields': ['moneyLink']}),
(None, {'fields': ['status']}),
(None, {'fields': ['label']})
]
inlines = [LabelInline]
admin.site.register(Audiobook, AudiobookAdmin)
标签管理类:
from labels.models import Label
from django.contrib import admin
class LabelAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['name']}),
(None, {'fields': ['description']}),
(None, {'fields': ['status']})
]
admin.site.register(Label, LabelAdmin)
标签部分都很好。
我必须做些什么才能在Audiobook管理页面中使用Dropdown控件选择标签? 如果我不想输入新的Audiobook,我会出现以下错误:
Exception Value: <class 'labels.models.Label'> has no ForeignKey to <class 'audiobooks.models.Audiobook'>
感谢您的帮助!
答案 0 :(得分:0)
Dropdown控件是ForeignKey的默认控件。
默认管理员配置应该有效:
from labels.models import Label
from audiobooks.models import Audiobook
from django.contrib import admin
admin.site.register(Label)
admin.site.register(Audiobook)