django中父模型中的相关名称,如果在其他模型中继承

related name in parent model in django if inherited in other model

我创建了一个可以在其他模型中继承的模型

母模型

1
2
3
4
5
6
7
8
9
10
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
1
2
class Status (Edit_Lane_Info, models.Model):  # parent class inherited
    ......
1
2
class Anpr(Edit_Lane_Info, models.Model): # parent class inherited
    ....
1
2
class Sensor_Details(Edit_Lane_Info, models.Model): # parent class inherited
    .............

现在我的问题是如何在编辑车道信息(父模型)中唯一地传递相关的车道名称。我用过related_name='$(class)s,但没有工作。

编辑线模型

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

你的related_name含有$而不是%

为了解决这个问题,当您使用相关的名称时,名称的一部分应该包含%(app_label)s%(class)s

编辑:

对于继承,您无需在以下各类别中继承models.ModelStatusAnprSensor_Details,因为Edit_Lane_Info已经从models.Model继承。

你应该那样做

1
2
3
4
5
Edit_Lane_Info(models.Model)

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