【问题标题】:Adding Multiple Models to inlineformset_factory将多个模型添加到 inlineformset_factory
【发布时间】:2010-10-15 19:27:21
【问题描述】:

我有一个像下面这样的模型。

class Content(SimpleModel):
    title = models.CharField(max_length=255)
    body = models.TextField()
    slug = models.SlugField(max_length=50)    

    def __unicode__(self):
        return self.title


class MediumStuff(models.Model):
    meta_value = models.TextField()
    meta_key = models.SlugField('Field Name', max_length=50, blank=True)
    content = models.ForeignKey(Content)

    def __unicode__(self):
        return self.slug


class SmallStuff(models.Model):
    text = models.CharField(max_length=60, blank=True, null=True)
    content = models.ForeignKey(Content)

我想做的是使用 inlineformset_factory() 为具有 MediumStuff 和 SmallStuff 模型的内联表单的内容创建表单集

我提到了Django Documentation,但他们有一个如何使用外键模型的示例。

ContentFormSet = inlineformset_factory(Content, [MediumStuff, SmallStuff])

也没有

ContentFormSet = inlineformset_factory(Content, (MediumStuff, SmallStuff))

没用。

既然可以向 admin 添加多个内联,我相信这是可以做到的 :)

您有什么建议/任何资源或提示吗? 或者可能告诉我应该在哪里查看管理员如何处理多个内联?

【问题讨论】:

    标签: django foreign-keys django-forms


    【解决方案1】:

    只需为每个相关模型创建一个内联:

    MediumStuffInline = inlineformset_factory(Content, MediumStuff)

    SmallStuffInline = inlineformset_factory(Content, SmallStuff)

    看看管理员是怎么做的。每个内联都由InlineModelAdmin[1] 的子类处理。内联本身是在 get_formset() 方法 [2] 上创建的。

    查看有关如何在视图中使用多个表单集的文档 [3][4]

    [1]http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/options.py#L228

    [2]http://code.djangoproject.com/browser/django/trunk/django/contrib/admin/options.py#L1243

    [3]http://docs.djangoproject.com/en/1.2/topics/forms/modelforms/#using-an-inline-formset-in-a-view

    [4]http://docs.djangoproject.com/en/1.2/topics/forms/formsets/#using-more-than-one-formset-in-a-view

    【讨论】:

    • 这很有帮助,我会试试看,看看 django admin 是如何工作的!!!非常感谢伊戈尔!
    猜你喜欢
    • 2021-09-23
    • 2016-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-15
    • 2013-10-11
    • 2012-03-31
    • 2015-06-15
    相关资源
    最近更新 更多