/ Padrão Diamond de campo em herança de vários modelos abstratos em Python / Django - python, django, python-3.x, herança múltipla, problema de diamante

Padrão de diamante de campo na herança de vários modelos abstratos em Python / Django - python, django, python-3.x, herança múltipla, problema de diamante

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 № 1

Use 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. :)