出于某种原因,类archive
和album
会在django管理面板中显示其所有字段,但{I} image
字段在我显示album
字段时转到图像面板添加图像。如果我打开一个shell,它会显示album
是image
的一个子集,它只是没有显示在image
的管理界面中(但它通过CLI执行) 。为什么呢?
class archive(models.Model):
name = models.CharField(max_length = 30)
archivedata = models.TextField(blank=True, help_text="Documentation for album/image.archivedata methodology is put here")
def __unicode__(self):
return self.name
class tag(models.Model):
archive = models.ForeignKey(archive)
tag = models.CharField(max_length=60)
def __unicode__(self):
return self.tag
class album(models.Model):
archive = models.ForeignKey(archive)
title = models.CharField(max_length=60)
tags = models.ManyToManyField(tag, blank=True, help_text="Searchable Keywords")
archivedata = models.TextField(blank=True, null=True, help_text="Data specific to particular archiving methods or processes can be stored here")
def __unicode__(self):
return self.title
class image(models.Model):
album = models.ForeignKey(album)
archive = models.ForeignKey(archive)
imagefile = models.ImageField(upload_to='ns/') #image.width/height
title = models.CharField(max_length=60, blank=True, help_text="Descriptive image title")
tags = models.ManyToManyField(tag, blank=True, help_text="Searchable Keywords")
更新:根据请求包含我的admin.py:
from django.db.models import get_models, get_app
from django.contrib import admin
from django.contrib.admin.sites import AlreadyRegistered
def autoregister(*app_list):
for app_name in app_list:
app_models = get_app(app_name)
for model in get_models(app_models):
try:
admin.site.register(model)
except AlreadyRegistered:
pass
autoregister('appname')
答案 0 :(得分:2)
您的admin.py
文件通常应如下所示。
from django.contrib import admin
admin.site.register(archive)
admin.site.register(album)
admin.site.register(image)
根据你的admin.py,我会这样做。
autoregister('archive', 'album', 'image')
那说了几点 - 你的admin.py有点过于复杂,当3行就足够了就不需要了。此外,您应该以大写(存档,专辑,图像)命名模型
答案 1 :(得分:1)
我没有看到任何问题你在管理员中有一些额外的代码吗?有些代码会覆盖album field
?