我有以下代码:
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吗?
我希望能够直接在Admin中将Variants添加到我的产品中。现在我得到一个没有变种的空的dropwdown(因为它们不存在)。
我认为当你指定外键时Django会自动执行此操作吗?
如何在编辑中直接在我的产品页面上显示Variant字段? 我在管理员中读过有关内联字段的内容吗?
答案 0 :(得分:2)
嗯,反之亦然:)
1 /将外键字段放在Variant中,而不是放在产品中(您描述的内容实际上是OneToMany关系)。
2 /将Variant链接到admin.py中相对ProductAdmin中的产品作为内联(即VariantInline)。
请参阅文档以获取更多信息:https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#inlinemodeladmin-objects
希望这有帮助!
此致