gpt4 book ai didi

django - 如何在管理中使用 contenttypes 自定义模型的显示?

转载 作者:行者123 更新时间:2023-12-04 05:02:56 24 4
gpt4 key购买 nike

我有这些模型:

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=".")

我正在为管理员注册所有模型,并且正在注销组、用户和站点。问题是,当我在管理中访问附件时,我看到它呈现如下:

admin for attachment

在内容类型选择中,我看到了这个列表:

select

Attachment 有 GenericForeignKey 的原因是因为 ProjectA 和 ProjectB 都需要访问它。我知道 ProjectA 和 ProjectB 是相同的,但要求它们存储在 2 个单独的表中。我怎样才能让管理员可以使用附件类?我知道如何从普通 View 中使用内容类型,但从管理员那里不知道。

在附件类中,我只想选择项目 A 或项目 B,然后是所有项目 A 或所有项目 B 的列表,然后是我想要附加的文件。

管理员可以这样做吗?我需要向用户显示对象 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)

转到您的 ProjectA 或 ProjectB 管理员并查看新管理员。

这不是你想要的,但它可以帮助你。否则你需要检查第一个链接。

关于django - 如何在管理中使用 contenttypes 自定义模型的显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6335565/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com