我创建了一个可以在其他模型中继承的模型
父模型
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模型
class Edit_Lane(models.Model): Anpr_Ip = models.GenericIPAddressField(default="NA")
答案 0 :(得分:0)
您的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):