Ответ 1
во-первых, вы должны быть очень осторожны, переопределяя __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, если вы будете использовать только подклассы этого объекта. Это гарантирует, что таблица не создана для животных и только для овец (и т.д.). если абстрактное не задано, тогда будет создана таблица Animal, а классу Sheep будет предоставлена его собственная таблица и автоматическое поле "animal", которое будет внешним ключом к модели Animal.