django模型可以嵌入类吗?

时间:2010-04-19 16:33:05

标签: django django-models model

我想要一个像这样的django模型:

class Model(models.Model):
 string = models.CharField()
 class ContactDetails:
  phone = models.IntegerField()

这可能吗?我试过谷歌搜索,但它似乎没有回答我的问题

这意味着我会在访问时使用:

Model().ContactDetails.phone

像那样工作:)

1 个答案:

答案 0 :(得分:1)

它可以有嵌入的类(常见的情况是class Meta),但忽略任何models.*Field成员。它在SQL中没有意义。

你想要的是多对一的:

class Thing(models.Model): # Don't name this class 'Model'!
    name = models.CharField(max_length=100)

class ContactDetails:
    parent = models.ForeignKey(Thing, related_name="contactDetails")
    phone = models.IntegerField()

然后,访问:

thing = Thing();
# ... set up thing ...
thing.save()
contact1 = ContactDetails(parent=thing)
# ... set up contact1 ...
contact1.save()
contact2 = ContactDetails(parent=thing)
# ... set up contact2 ...
contact2.save()
# ...
thing.contactDetails.all()
# returns a list with contact1 and contact2

或其他什么。