添加新的内联行时,django-nested-inline缺少字段

时间:2017-09-04 09:44:41

标签: django

在我们的项目中,我一直在使用最新版本的django-nested-inlines v0.3.7和django 1.7

我在django admin中有以下定义来显示内联

class SpecsGroupedContentInline(NestedStackedInline):
    model = SpecificationGroupedContent
    extra = 1
    fk_name = "specification"
    fields = ["field_unit"]


class SpecsContentInline(NestedStackedInline):
    model = SpecificationListContent
    extra = 1
    fk_name = "specification"
    fields = ["content"]


class SpecsInline(NestedStackedInline):
    model = Specification
    inlines = [SpecsContentInline, SpecsGroupedContentInline]
    extra = 1
    fk_name = "product"


class ProductAdmin(NestedModelAdmin):
    inlines = [
        SpecsInline
    ]
    list_display = ('name', 'sku')
    form = ProductAdminForm

页面加载时,页面如下所示

Initial product page load

有点难以看到,但规格部分有标题,列出内容的内联和分组内容的内联。之后,有一个空的Specs部分,其中包含空标题,空列出的内容和空的分组内容。

当我按下"添加另一个规格"在规范内部的按钮内联添加一个新行,新条目的结果如下所示

New Specification entry image

正如您所看到的,分组内容字段" Field Unit"不见了。我不确定我的设置是否不正确,但我发现这个堆栈溢出条目与我的设置类似

Django nested inlines not working?

虽然是一个不同的错误,但我们有类似的内联设置,所以我认为这个设置适用于django-nested-inlines。

另外,如果嵌套的内联模型是另一个模型的外键,我确定它是否相关但是django嵌套内联会受到影响吗? SpecificationsGroupedContent模型是另一个模型的外键,与SpecificationsListContent不同。我做了一个快速测试,其中SpecsInline内联仅包含SpecsGroupedContentInline或仅包含SpecsContentInline。仅使用SpecsContentInline时它工作得很好,但使用SpecsGroupedContentInline时会发生错误。

供参考,以下是我用于SpecsGroupedContent的相关模型的模型

class Product(AuthorStampedModel):
    name = models.CharField(max_length=100)
    sku = models.CharField(unique=True, max_length=100, verbose_name='SKU')
    summary = models.TextField(blank=True, default="")

    def __unicode__(self):
        return self.return_product_details()

    def return_product_details(self):
        return '%s: %s' % (self.sku, self.name)

class Specification(models.Model):
    product = models.ForeignKey('Product', related_name='specs')
    title = models.CharField(max_length=100)

    def __unicode__(self):
        return self.return_spec_string()

    def return_spec_string(self):
        return '%s: %s' % (self.product.return_product_details(), self.title)


class SpecificationListContent(models.Model):
    specification = models.ForeignKey('Specification', related_name='list_content')
    content = models.CharField(max_length=255)

    class Meta:
        verbose_name_plural = 'Specification Listed Contents'

    def __unicode__(self):
        return self.specification.return_spec_string()


class SpecificationGroupedContent(models.Model):
    specification = models.ForeignKey('Specification', related_name='group_content')
    field_unit = models.CharField(max_length=255)

    class Meta:
        verbose_name_plural = 'Specification Grouped Contents'

    def __unicode__(self):
        return self.specification.return_spec_string()


class SpecificationGroupedContentValue(models.Model):
    specification_grouped_content = models.ForeignKey(
        'SpecificationGroupedContent',
        related_name='group_content_value'
    )
    value = models.CharField(max_length=255)

    class Meta:
        verbose_name_plural = 'Specification Grouped Content Values'

    def __unicode__(self):
        return self.specification_grouped_content.specification.return_spec_string()

由于

0 个答案:

没有答案