Eu estou tendo a seguinte hierarquia de classes de modelo:
from django.db import models
class Entity(models.Model):
createTS = models.DateTimeField(auto_now=False, auto_now_add=True)
class Meta:
abstract = True
class Car(Entity):
pass
class Meta:
abstract = True
class Boat(Entity):
pass
class Amphibious(Boat,Car):
pass
Infelizmente, isso não funciona com o Django:
shop.Amphibious.createTS: (models.E006) The field "createTS" clashes with the field "createTS" from model "shop.boat".
Mesmo se eu declarar Boat abstract, não ajuda:
shop.Amphibious.createTS: (models.E006) The field "createTS" clashes with the field "createTS" from model "shop.amphibious".
É possível ter uma hierarquia de classes de modelo com herança múltipla e uma classe base comum (subclasse models.Model) que declara alguns campos?
Respostas:
0 para resposta № 1Use isso e veja se isso ajuda. Se você estiver tentando incluir o registro de data e hora nos modelos, basta criar um modelo de base que inclua apenas o registro de data e hora.
from django.db import models
class Base(models.Model):
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
class Meta:
abstract = True
class Boat(Base):
boat_fields_here = models.OnlyBoatFields()
class Amphibious(Boat):
# The boat fields will already be added so now just add
# the car fields and that will make this model Amphibious
car_fields_here = models.OnlyCarFields()
Eu espero que isso ajude. Vejo que faz 5 meses desde que você postou essa pergunta. Se você já encontrou uma solução melhor, por favor, compartilhe conosco, nos ajudará muito para o aprendizado. :)