在一个管理表单中保存两个模型

时间:2013-10-01 13:30:47

标签: python django django-models django-admin

我编写了一个CMS,我的两个相关模型是talkattachment。谈话可以有很多附件。我的问题是,当用户创建新的谈话时,他们必须在单独的窗口中以单独的形式创建附件。

对于我的项目,要求用户在创建新演讲的同时创建新附件。用户最多可以包含5个附件对象。目前talk看起来像

class talk(models.Model):
    title = models.CharField(max_length = 255)
    ...
    attachments = models.ManyToManyField('attachment')

attachment看起来像

class attachment(models.Model):
    title = models.CharField(max_length = 255)
    link = models.URLField("Attachment URL")

这可能吗?

1 个答案:

答案 0 :(得分:2)

是。您可以使用InlineModelAdminhttps://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.InlineModelAdmin

由于attachmentsManyToMany字段,您可以执行以下操作:

from django.contrib import admin

class AttachmentThroughInline(admin.TabularInline):
    model = talk.attachments.through

class talkAdmin(admin.ModelAdmin):
    inlines = [
        AttachmentThroughInline,
    ]