如果在其他模型中继承,django 中父模型中的相关名称
related name in parent model in django if inherited in other 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 型号
class Edit_Lane(models.Model):
Anpr_Ip = models.GenericIPAddressField(default="NA")
您的 related_name
包含 $
而不是 %
要解决此问题,当您使用 related_name 时,名称的一部分应包含 %(app_label)s
或 %(class)s
编辑:
对于继承,你不需要在每个class中从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):
我创建了一个可以在其他模型中继承的模型
父模型
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")
您的 related_name
包含 $
而不是 %
要解决此问题,当您使用 related_name 时,名称的一部分应包含 %(app_label)s
或 %(class)s
编辑:
对于继承,你不需要在每个class中从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):