在此发布;我相信我会把它搞清楚,这可能只会节省一些时间。
在python中你可以这样做:
>>> class Toto():
... def w(self):
... print(self.name)
...
...
...
>>> class Tata(Toto):
... name = 'Hehehehe'
...
...
>>>
>>> e = Tata()
>>> e.w()
Hehehehe
>>>
很难,使用Django我在完全相同的上下文中遇到了这个错误:
object has no attribute 'name'
所以我试着弄清楚我的某些物品是否没有属性“名称”,但似乎它们都有它。
两个问题:
Django方面对这类事情的限制是什么?
如何检查哪个对象引发错误,以便我可以正确检查该属性?
答案 0 :(得分:0)
我已经弄清楚了!
因此,模型覆盖会在主机类
中创建一个新属性class Base(models.Model):
def __str__(self):
objs = ['Extended'] # name of the overwriting object
for ob in objs:
try:
return getattr(self, ob).name
except:
pass
return 'Unbinded overwritten object'
class Extended(models.Model):
name = models.CharField(max_length=300)
Base获取一个名为extended的新属性。因此,访问内部的自定义属性需要通过覆盖对象名称。
> t = Extended(name='test')
> t.save()
> bases = Base.objects.all()
> b[0].Extended.name
'test'
每个人都祝圣诞快乐