说,我们正在创建一个网站,客户(Customer
)可以来评论出版社(PublishingHouse
)。我们需要存储Customer
和PublishingHouse
的地址,因此我们创建一个Address
类,如下所示:
class Address(models.Model):
line1 = models.CharField(max_length=50)
line2 = models.CharField(max_length=50)
city = models.CharField(max_length=50)
postal_code = models.CharField(max_length=6)
country = models.CharField(max_length=50)
然后我们的Customer
和PublishingHouse
类引用了它,如下所示:
class Customer(models.Model):
name = models.CharField(max_length=50)
address = models.ForeignKey(Address)
class PublishingHouse(models.Model):
name = models.CharField(max_length=50)
website = models.URLField(max_length=4096)
address = models.ForeignKey(Address)
这适用于我在django shell中的交互式会话,但是当我为这些模型激活管理员时,是否有一种方法可以使Address
中的字段显示在“添加客户”或“添加发布”页面上?
我正在使用django 1.5
答案 0 :(得分:0)
你可能正在寻找generic inlines。根据记录的example Address
,您的Image
型号
根据您的评论,您可以使用类继承:
class Address(models.Model):
# fields
class DynamicAddress(Address):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey("content_type", "object_id")
# etc
此外,您可以使用通用内联管理类中的max_num
属性限制(通用)内联。