在Django管理员中,我可以使用GenericTabularInline显示内联反向的通用关系。这有效....
class Art(TimeDateStampedModel):
collections = GenericRelation('apps.Collection')
admin.py
class CollectionsInline(GenericTabularInline):
model = Collection
class ArtAdmin(admin.ModelAdmin):
inlines = [
CollectionsInline,
MediaActivityInline,
]
但它只允许我添加新的集合或更新已经相关的集合。 如何从Collection
搜索/选择或选择现有Art
。
我尝试在Art上使用GenericRelation
,但它不起作用:
class ArtAdmin(admin.ModelAdmin):
fieldsets = (
('', {
'fields': ('collections'),
}),
)
答案 0 :(得分:1)
您目前在Collection
模型中拥有通用外键。听起来这不是你想要的,因为你希望能够将每个collection
分配给多个外部对象。
你可以尝试创建一个模型,例如CollectionMember
(不是一个好名字),带有收集的外键和通用外键。
class CollectionMember(models.Model):
"""
Allows collections to be assigned to multiple external
objects using a generic foreign key
"""
collection = models.ForeignKey(Collection)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
在ArtAdmin
中将CollectionMember添加为通用内联,然后您就可以为每个collection_member
内联选择集合。