Geo*_*Geo 6 django django-models django-admin django-contenttypes
我有这些模型:
class App(models.Model):
name = models.CharField(max_length=100)
class ProjectA(models.Model):
name = models.CharField(max_length=100)
app = models.ForeignKey(App)
class ProjectB(ProjectA):
pass
class Attachment(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
project = generic.GenericForeignKey("content_type","object_id")
file = models.FileField(upload_to=".")
Run Code Online (Sandbox Code Playgroud)
我正在为管理员注册所有模型,而我正在取消注册Group,User和Site.问题是,当我访问管理员中的附件时,我看到它呈现如下:

在内容类型选择中,我看到此列表:

Attachment具有GenericForeignKey的原因是因为ProjectA和ProjectB都需要访问它.我知道ProjectA和ProjectB是相同的,但要求它们存储在2个单独的表中.我怎么能从管理员那里使用Attachment类?我知道如何使用普通视图中的contenttypes,但不是来自管理员.
在Attachment类中,我只想选择项目A或项目B,然后选择所有项目A或所有项目B的列表,然后是我想要附加的文件.
管理员可以做这样的事吗?我是否需要向用户显示Object Id列?
如果我没错,你想要这个.http://code.google.com/p/django-genericadmin/
我的建议会有所不同.您将在ProjectA中添加一个更多的表单,ProjectB作为内联.在你的admin.py中
from django.contrib import admin
from django.contrib.contenttypes import generic
from myproject.myapp.models import Attachment, ProjectA, ProjectB
class Attachmentline(generic.GenericTabularInline): #or generic.GenericStackedInline, this has different visual layout.
model = Attachment
class ProjectAdmin(admin.ModelAdmin):
inlines = [
Attachmentline,
]
admin.site.register(ProjectA, ProjectAdmin)
admin.site.register(ProjectB, ProjectAdmin)
Run Code Online (Sandbox Code Playgroud)
去你的ProjectA或ProjectB管理员,看看新的管理员.
这不是你想要的,但它可以帮助你.否则你需要检查第一个链接.
| 归档时间: |
|
| 查看次数: |
2914 次 |
| 最近记录: |