首页 文章

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

提问于
浏览
0

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

Parent Model

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
    .............

现在我的问题是如何唯一地传递Edit_Lane_Info(父模型)中的related_name . 我使用了 related_name='$(class)s ,但没有用

Edit_Lane model

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

1 回答

  • 0

    你的 related_name 包含 $ 而不是 %

    若要解决此问题,当您使用related_name时,名称的一部分应包含 %(app_label)s%(class)s

    EDIT:

    对于继承,您不需要在 classStatusAnprSensor_Details 中继承 models.Model ,因为 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):
    

相关问题