родственное имя в родительской модели в django, если наследуется в другой модели - PullRequest
0 голосов
/ 25 мая 2018

Я создал модель, которая может быть унаследована в других моделях

Родительская модель

class Edit_Lane_Info(models.Model):
    lane_info = models.OneToOneField(Edit_Lane, related_name='$(class)s', on_delete=models.CASCADE)

    def delete(self, *args, **kwargs):
        super().delete(*args, **kwargs)
        if self.lane_info:
            self.lane_info.delete()

    class Meta:
        abstract = True
class Status (Edit_Lane_Info, models.Model):  # parent class inherited
    ......

class Anpr(Edit_Lane_Info, models.Model): # parent class inherited
    ....
class Sensor_Details(Edit_Lane_Info, models.Model): # parent class inherited
    .............

Теперь мой вопроскак я могу передать related_name в Edit_Lane_Info (родительская модель) уникально.Я использовал related_name='$(class)s, но не работает

Модель Edit_Lane


class Edit_Lane(models.Model):
    Anpr_Ip = models.GenericIPAddressField(default="NA")

1 Ответ

0 голосов
/ 25 мая 2018

Ваш related_name содержит $ вместо %

Чтобы обойти эту проблему, когда вы используете related_name, часть имени должна содержать %(app_label)s или %(class)s

РЕДАКТИРОВАТЬ:

Для наследования вам не нужно наследовать от models.Model в каждом следующем классе : Status, Anpr, Sensor_Details, поскольку Edit_Lane_Info уже унаследован от models.Model

Вы должны иметь его таким образом

Edit_Lane_Info(models.Model)

class Status (Edit_Lane_Info):
class Anpr (Edit_Lane_Info):
class Sensor_Details (Edit_Lane_Info):
...