как я могу решить мою проблему с моделью наследования? - PullRequest
0 голосов
/ 06 мая 2020

Я начинающий 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}'
...