Django:带有“通过”的 InlineAdmin 和 ManyToManyField

Posted

技术标签:

【中文标题】Django:带有“通过”的 InlineAdmin 和 ManyToManyField【英文标题】:Django: InlineAdmin and ManyToManyField with 'through' 【发布时间】:2011-05-19 18:21:08 【问题描述】:

我有一个简单的Gallery 模型,它通过具有ordering-attribute 的表通过多对多关系与Image 模型相关:

# models.py
class Image(models.Model):
    ....

class Gallery(models.Model):
    images = models.ManyToManyField(Image, through='ImageGallery')
    ....

class ImageGallery(models.Model)
    image = models.ForeignKey(Image)
    gallery = models.ForeignKey(Gallery)
    ordering = models.PositiveIntegerField(_('ordering'), default=0)

# admin.py
class ImageGalleryAdmin(admin.ModelAdmin):
    model = ImageGallery

class GalleryAdmin(admin.ModelAdmin):
    inlines = (ImageGalleryAdmin,)

我正在通过内联管理员编辑“通过”表。

我想做的是能够直接在内联管理中上传/编辑图像,所以我想知道是否有人知道现有的 sn-p,它允许我编辑字段'through'-table 连同引用模型(图像)的字段,不需要编辑外键选择....

【问题讨论】:

我想要同样的东西......只是为了稍微澄清一下这个问题,使用标准 django 内联,最终模型的属性不可用 - 只有“通过”模型的属性(例如order 参数)可以在内联中编辑。我认为需要的是,链接对象的顺序参数和参数都可以在同一个内联中编辑。 【参考方案1】:

看来这个问题已经在这里回答了:

Django admin - inline inlines (or, three model editing at once)

您需要为引用链接对象的内联创建自定义表单和模板。

【讨论】:

【参考方案2】:

我可能不明白你的问题。你不能只使用:

类 ImageAdmin (admin.ModelAdmin)

inlines = (ImageGalleryAdmin,)

admin.site.register(Image, ImageAdmin)

【讨论】:

以上是关于Django:带有“通过”的 InlineAdmin 和 ManyToManyField的主要内容,如果未能解决你的问题,请参考以下文章

带有两个外键的 Django 保存表单

带有 websocket 的 Django 框架

带有 ReactJS 的 Django 表单

带有 React 前端的 Django 后端

EmailMultiAlternatives 在 django 中发送带有图像的邮件时添加 3D

带有自动提交事务的 Django save() 行为