
更新的答案:正如人们在评论中指出的那样,原始答案未正确回答问题。
实际上,只有LongNamedRestaurant
模型是在数据库中创建的,Place
不是。
一个解决方案是创建一个代表“地方”的抽象模型。
AbstractPlace,并从中继承:
class AbstractPlace(models.Model): name = models.CharField(max_length=20) rating = models.DecimalField() class meta: abstract = Trueclass Place(AbstractPlace): passclass LongNamedRestaurant(AbstractPlace): name = models.CharField(max_length=255) food_type = models.CharField(max_length=25)
还请阅读@Mark答案,他很好地解释了为什么您不能更改从非抽象类继承的属性。
(请注意,这仅在Django 1.10之后才可行:在Django 1.10之前,无法修改从抽象类继承的属性。)
原始答案从Django
1.10开始,就有可能!您只需要做您要求的:class Place(models.Model): name = models.CharField(max_length=20) rating = models.DecimalField() class meta: abstract = Trueclass LongNamedRestaurant(Place): # Subclassing `Place`. name = models.CharField(max_length=255) # Notice, I'm overridingPlace.nameto give it a longer length.
food_type = models.CharField(max_length=25)
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)