这是我的问题:我尝试在
下创建图层models.Model
我的模特 -
class MainModel(models.Model):
@staticmethod
def getIf(condition):
results = __class__.objects.filter(condition)
if results.count() > 0:
return results.first()
else:
return None
那是一个模特
class User(MainModel):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=256)
date_create = models.DateTimeField(auto_now_add=True)
date_last_login = models.DateTimeField(null=True)
但是我的项目被粉碎了 -
django.core.exceptions.FieldError:本地字段' id'在班级'用户' 与基类' MainModel'。
中的同名字段发生冲突
我做错了什么?
UPD:如果你想这样做,你需要在你的图层
中使用子类Metaclass MainModel(models.Model):
@staticmethod
def getIf(condition:dict):
results = __class__.objects.filter(condition)
if results.count() > 0:
return results.first()
else:
return None
class Meta:
abstract = True
答案 0 :(得分:2)
Thanx,但我没有尝试覆盖字段,在我的图层中没有定义任何一个字段。我找到了答案,我只需要阅读文档。
如果你想这样做,你需要在你的图层
中使用子类Metaclass MainModel(models.Model):
@staticmethod
def getIf(condition:dict):
results = __class__.objects.filter(condition)
if results.count() > 0:
return results.first()
else:
return None
class Meta:
abstract = True
答案 1 :(得分:1)
Django为所有模型添加了一个字段id
,您必须将其删除。
好的,我现在更好地理解你的问题,你的答案就在那里:
In Django - Model Inheritance - Does it allow you to override a parent model's attribute?
Django已经在您的父模型中添加了一个字段ID。