Python 使用Django访问覆盖对象中的嵌套属性
把这个贴在这里;我相信我会有一些麻烦,它可能会节省我一些时间 在python中,可以执行以下操作:Python 使用Django访问覆盖对象中的嵌套属性,python,django,object,models,Python,Django,Object,Models,把这个贴在这里;我相信我会有一些麻烦,它可能会节省我一些时间 在python中,可以执行以下操作: >>> class Toto(): ... def w(self): ... print(self.name) ... ... ... >>> class Tata(Toto): ... name = 'Hehehehe' ... ... >>> >>> e = Tata() >>&
>>> class Toto():
... def w(self):
... print(self.name)
...
...
...
>>> class Tata(Toto):
... name = 'Hehehehe'
...
...
>>>
>>> e = Tata()
>>> e.w()
Hehehehe
>>>
很难,使用Django,我在完全相同的上下文中遇到了这个错误:
object has no attribute 'name'
所以我试着弄清楚我的一些对象是否没有“name”属性,但它们似乎都有
两个问题:
Django方面对这种事情有什么限制吗?
如何检查哪个对象抛出错误,以便正确检查它是否具有属性?我已经找到了答案 因此,模型覆盖会在宿主类中创建一个新属性
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'
大家圣诞快乐