Как эффективно повторно использовать Django моделей - PullRequest
1 голос
/ 11 апреля 2020

У меня есть 2 типа продуктов, 1 - продукт, 1 - дочерний продукт (дочерний продукт), но он будет использовать тот же атрибут продукта.

, поэтому моя таблица продуктов похожа на

 class Activity(models.Model):
    owner = models.ForeignKey(owner, on_delete=models.CASCADE)
    Name = models.CharField(max_length=50 , null=False, blank=False)
    filed1 = models.CharField(max_length=50 , null=False, blank=False)
    filed2 = models.CharField(max_length=50 , null=False, blank=False)

, и теперь она имеет около 4 таблиц своих свойств, например, здесь я вставлю 2.

class workinfDatDates(models.Model):
   agenda = models.ForeignKey(Activity, on_delete=models.CASCADE)
   Date = models.DateField()

и

class BlockedDates(models.Model):
   agenda = models.ForeignKey(Activity, on_delete=models.CASCADE)
   blockDate = models.DateField()

Теперь дочерний продукт является дочерним по отношению к

  class SubActivity(models.Model):
        activity = models.ForeignKey(Activity, on_delete=models.CASCADE)
        subName = models.CharField(max_length=50 , null=False, blank=False)

и должен иметь такие же атрибуты, как даты блоков и рабочие даты и т. Д. c. Теперь я должен создать новые таблицы для этого? или есть какой-нибудь хороший способ использовать что-то для включения в уже определенные таблицы?

EDIT

В моей таблице Activity есть так много дополнительных полей, которые я не хочу использовать как filed1, field2, field3 et c

1 Ответ

1 голос
/ 11 апреля 2020

Вместо использования ForeignKey вы можете использовать наследование нескольких таблиц :

class SubActivity(Activity):
        subName = models.CharField(max_length=50 , null=False, blank=False)

Таким образом, SubActivity является действием, но с дополнительными полями

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...