【问题标题】:Django one-to-many, add fields dynamically in AdminDjango 一对多,在Admin中动态添加字段
【发布时间】:2014-02-12 15:08:18
【问题描述】:

我有以下代码:

class Item(models.Model):
    name = models.CharField(max_length=100)
    keywords = models.CharField(max_length=255)
    type = models.ForeignKey(Type)

    class Meta:
        abstract = True

class Variant(models.Model):
    test_field = models.CharField(max_length=255)

class Product(Item):
    price = models.DecimalField(decimal_places=2, max_digits=8,null=True, blank=True)
    brand = models.ForeignKey(Brand)
    variant = models.ForeignKey(Variant)

    def get_fields(self):
        return [(field.name, field.value_to_string(self)) for field in Product._meta.fields]

    def __unicode__(self):
        return self.name

我正在使用 Grappelli。 我希望我的产品有多个变体。我应该使用多字段吗?

我希望能够直接在管理员中将变体添加到我的产品中。现在我得到一个没有变体的空下拉列表(因为它们不存在)。

我认为当你指定外键时 Django 会自动执行此操作?

如何让 Variant 字段在编辑时直接显示在我的产品页面上? 我读过一些关于 Admin 中的内联字段的内容?

【问题讨论】:

    标签: python django admin django-grappelli


    【解决方案1】:

    嗯,情况正好相反 :)

    1/ 将外键字段放在 Variant 中,而不是 Product 中(您描述的实际上是 OneToMany 关系)。

    2/ 在 admin.py 中的相关 ProductAdmin 中将 Variant 作为内联(即 VariantInline)链接到您的产品。

    有关更多信息,请参阅文档:https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#inlinemodeladmin-objects

    希望这会有所帮助!

    问候,

    【讨论】:

    • 工作就像一个魅力!谢谢!是否可以嵌套内联模型?如果我想向 Variantmodel 添加另一个类,可以吗?我尝试做同样的事情,但我没有让它工作......
    猜你喜欢
    • 1970-01-01
    • 2016-11-15
    • 2016-02-23
    • 2011-12-21
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    相关资源
    最近更新 更多