在Django模型中,是否可以将该模型的一个字段设置为内联(具有该字段的多个实例)? 我可以通过创建一个内联模型并在那里移动那个字段来实现这一点,但我试图避免使用TabularInline或StackedInline,并将它们放在一个模型中。
我需要的例子是:
class Entity(models.Model):
name = models.CharField(max_length=255)
email = models.EmailField(max_length=255)
我需要能够添加“email”字段的多个实例,而无需创建新的Inline模型。
这可以使用下面的代码完成(但这就是我想避免的):
class Entity(models.Model):
name = models.CharField(max_length=255)
和内联模型:
class EntityEmail(models.Model):
link = models.ForeignKey(Entity)
email = models.EmailField(max_length=255)
答案 0 :(得分:2)
Django 1.9 introduced support用于PostgreSQL字段类型ArrayField
,您可以将其用于字符串列表(表示电子邮件地址)。
class Entity(models.Model):
...
email_addresses = ArrayField(models.EmailField(max_length=200), blank=True)
答案 1 :(得分:0)
如果有固定数量的字段,您可以改为:
class Entity(models.Model):
name = models.CharField(max_length=255)
email_1 = models.EmailField(max_length=255)
email_2 = models.EmailField(max_length=255)
...
email_n = models.EmailField(max_length=255)
但是如果你事先不知道字段数(或者每个Entity
都不一样)那么不,你将不得不使用带有外键的单独模型返回{ {1}}。 (最后,无论如何,这几乎肯定是一个更好的设计。)