1

我有以下代码:

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。我希望我的产品有多个变体。我应该使用manytomanyfield吗?

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

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

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

4

1 回答 1

2

嗯,情况正好相反:)

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

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

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

希望这可以帮助 !

问候,

于 2014-02-12T15:56:39.680 回答