我想要一个像这样的django模型:
class Model(models.Model):
string = models.CharField()
class ContactDetails:
phone = models.IntegerField()
这可能吗?我试过谷歌搜索,但它似乎没有回答我的问题
这意味着我会在访问时使用:
Model().ContactDetails.phone
像那样工作:)
乔
答案 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
或其他什么。