Ich verwende die Django-Modellvererbung, um ein Entitätsmodell zu erstellen, sodass ich zwei Fremdschlüssel im Konversationsmodell als Entity_1 und Entity referenzieren kann entity_2 kann eine Person oder ein Unternehmen sein. Jedoch habe ich immer folgende Fehlermeldung erhalten:Feld definiert eine Beziehung mit dem Modell 'Entity', die entweder nicht installiert ist oder abstrakt ist
api.Conversation.entity_1: (fields.E300) Field defines a relation with model 'Entity', which is either not installed, or is abstract.
api.Conversation.entity_2: (fields.E300) Field defines a relation with model 'Entity', which is either not installed, or is abstract.
Dies ist mein Code so weit:
class Entity(models.Model):
id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
class Meta:
abstract = True
class Person(Entity):
"""
Person model
"""
avatar = models.ImageField(upload_to=get_upload_avatar_path, blank=True, null=True, default=None, max_length=255)
first_name = models.CharField(max_length=255)
last_name = models.CharField(max_length=255)
class Business(Entity):
"""
Business model
` """
name = models.CharField(max_length=255, null=True, default=None)
class Conversation(models.Model):
id = models.UUIDField(primary_key=True, default=uuid4, editable=False)
entity_1 = models.ForeignKey(Entity)
entity_2 = models.ForeignKey(Entity)
Sie können nicht zu einer abstrakten Klasse verweisen. Es erstellt keine Datenbanktabelle. – trantu
@trantu was soll ich dann tun? Ich möchte Entity_1 und Entity_2 sowohl auf Referenzperson als auch auf Business verweisen, sodass ich über das Konversationsmodell auf – methuselah