Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django访问覆盖对象中的嵌套属性_Python_Django_Object_Models - Fatal编程技术网

Python 使用Django访问覆盖对象中的嵌套属性

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() >>&

把这个贴在这里;我相信我会有一些麻烦,它可能会节省我一些时间

在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'
所以我试着弄清楚我的一些对象是否没有“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'
大家圣诞快乐