во-первых, вы должны быть очень осторожны, переопределяя __init__
, чтобы иметь необязательные аргументы. помните, что он будет вызываться каждый раз, когда вы получаете объект из набора запросов!
это правильный код, который вы хотите:
class Animal(models.Model):
#class Meta: #uncomment this for an abstract class
# abstract = True
aul = models.ForeignKey(Aul)
weight = models.IntegerField(default=3)
quality = models.IntegerField(default=10)
age = models.IntegerField(default=0)
def __unicode__(self):
return self.age
class Sheep(Animal):
wool = models.IntegerField()
Я настоятельно рекомендую установить абстрактную опцию в Animal, если вы будете когда-либо использовать подклассы этого объекта. Это гарантирует, что таблица создана не для животных, а только для овец (и т. Д.). если abstract не задан, то будет создана таблица Animal, а классу Sheep будет предоставлена собственная таблица и автоматическое поле «animal», которое будет внешним ключом для модели Animal.