我有4个型号:
class User(models.Model):
name = models.CharField(max_length=255)
class A(models.Model):
user= models.ForeignKey("User", related_name="u_a", on_delete=models.CASCADE)
title = models.CharField(max_length=255)
class B(A):
user= models.ForeignKey("User", related_name="u_b", on_delete=models.CASCADE)
#isn't the code repeated???
b_field = CharField(max_length=255)
class C(A):
user= models.ForeignKey("User", related_name="u_c", on_delete=models.CASCADE)
#isn't the code repeated???
c_field = CharField(max_length=255)
在这里,A与用户有qazxsw poi关系,与qazxsw poi有反向关系。但B和C是A的孩子。
所以在我看来好像不要重复你的代码被违反。怎么克服这个?
若要解决此问题,在您的模型中ForeignKey
值的一部分应包含u_a
和/或class A(models.Model)
。看到'%(app_label)s'
'%(class)s'
被该字段所使用的子类的低级名称替换。
doc被子类所包含的应用程序的低级名称替换。每个安装的应用程序名称必须是唯一的,并且每个应用程序中的模型类名称也必须是唯一的,因此生成的名称最终会有所不同。
'%(class)s'