interface / inheritance model django

Обновить

April 2019

Просмотры

26 раз

1

Я пытаюсь моделировать следующее в Django, но у меня возникли проблемы

City:
     name : Str
     belongs_to_providence : Providence

Providence:
     name : Str
     belongs_to_country : Country

Country:
     name : Str
     language : Str

Proponsal:
     title : Str
     affects_to : City | Providence | Country

Я пытался сделать это с помощью абстрактной модели, как следующее:

# account/models.py
class CommonLocationInfo(models.Model):
    name = models.CharField(max_length=180, blank=False)

    def __str__(self):
        return self.name

    class Meta:
        abstract = True

class Country(CommonLocationInfo):
    language = models.CharField(max_length=120)

class Providence(CommonLocationInfo):
    country = models.ForeignKey(Country, on_delete=models.CASCADE, related_name="belongs_to_country", null=True)

class City(CommonLocationInfo):
    providence = models.ForeignKey(Providence, on_delete=models.CASCADE, related_name="belongs_to_providence", null=True)

class Proponsal(models.Model):
     affects_to = models.ManyToManyField(CommonLocationInfo)

но не работает, он говорит мне следующее

Поле определяет соотношение с моделью «CommonLocationInfo», который либо не установлен, либо является абстрактным.

0 ответы