0

比如说,我们正在创建一个网站,客户 ( Customer) 可以来为出版社 ( PublishingHouse) 打分。我们需要存储 和 的地址CustomerPublishingHouse所以我们创建一个这样的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)

然后我们的CustomerPublishingHouse类有对它的引用,像这样:

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

4

1 回答 1

0

您可能正在寻找通用内联。根据记录的示例 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通用内联管理类上的属性限制(通用)内联。

于 2013-03-14T11:25:20.310 回答