Я начинающий Django разработчик и у меня такая ситуация наследования. У меня есть абстрактный класс, и некоторые дочерние классы на самом деле d абстрактный класс представлен одним из своих дочерних классов, каждый дочерний элемент связан с другим классом (fiche_annonce) отношением oneToOne. Я знаю, что класс нельзя связать с абстрактным. как я могу справиться с этой ситуацией.
from django.db import models
из enum import Enum from useres.models import comptes
Создайте здесь свои модели.
class TimeStampModel (models.Model):
created = models.TimeField(auto_now_add=True)
modified = models.TimeField(auto_now=True)
class Meta:
abstract = True
class type_bagages (Enum):
pas_bgg = ('pbgg', 'pas de bagages')
bgg_normal = ('bgg_n', 'bagages normal')
bgg_lourd = ('bgg_l', 'bagages lourd')
bgg_tr_lourd = ('bgg_tr_l', 'bagages tres lourd')
@classmethod
def get_type(cls, type):
return cls[type].value[0]
class type_service (Enum):
livreur = ('lvr', 'livreur')
bagages = ('bgg', 'bagages')
@classmethod
def get_type(cls, type):
return cls[type].value[0]
анонсы класса (TimeStampModel):
compte = models.ForeignKey(comptes, on_delete=models.CASCADE)
num_tele = models.IntegerField()
ville = models.CharField(max_length=30)
bagages = models.CharField(max_length=8, choices=[x.value for x in type_bagages])
comment = models.TextField(max_length=200)
visiblty = models.BooleanField(default=False)
def __str__(self):
return f'{self.pk} {self.comte}'
class Meta:
abstract=True
livraison класса (объявления):
service = models.CharField(max_length=3, choices=[x.value for x in type_service])
класс annonce_demande (объявления):
num_personnes = models.IntegerField()
класс annonce_ville (annonce_demande):
lieu = models.CharField(max_length=30)
distination = models.CharField(max_length=30)
date_depart = models.DateField(max_length=50)
класс annonce_offrir (объявления): num_places = models.IntegerField ()
класс fiche_annonce (TimeStampModel):
annonce = models.OneToOneField(annonces, on_delete=models.CASCADE)
ville_depart = models.CharField(max_length=50)
ville_distination = models.CharField(max_length=50)
lieu_depart = models.CharField(max_length=50)
lieu_arrive = models.CharField(max_length=50)
date_depart = models.DateField(max_length=50)
lieu_arrive = models.CharField(max_length=50)
is_accepted = models.BooleanField(default=False)
visiblty = models.BooleanField(default=False)
def __str__(self):
return f'{self.pk} {self.annonce} {self.ville}'