Python django在为其子模型调用_set.all()时引发AttributeError
我目前正在模仿django官方民意调查的例子来开发我自己的模型,如下所示:Python django在为其子模型调用_set.all()时引发AttributeError,python,django,django-models,Python,Django,Django Models,我目前正在模仿django官方民意调查的例子来开发我自己的模型,如下所示: from django.db import models class Instance(models.Model): inst_host = models.CharField(max_length=64) def __str__(self): return self.inst_host class RDMInfo(models.Model): instance = models
from django.db import models
class Instance(models.Model):
inst_host = models.CharField(max_length=64)
def __str__(self):
return self.inst_host
class RDMInfo(models.Model):
instance = models.ForeignKey(Instance)
filesystem = models.CharField(max_length=16)
osdevice = models.CharField(max_length=16)
lun_name = models.CharField(max_length=128)
lun_id = models.IntegerField()
wwn = models.CharField(max_length=128, unique=True)
lun_size = models.CharField(max_length=8)
def __str__(self):
return '%s %s %s %s %s %s' % (self.filesystem, self.osdevice, self.lun_name, self.lun_id, self.wwn, self.lun_size)
当我执行以下操作时,出现了错误:
>>> from rdm.models import Instance, RDMInfo
>>> q = Instance.objects.get(pk=1)
>>> q
<Instance: alps_mtkalpsdbp1>
>>> q.rdminfo_set.all()
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/usr/local/lib/python3.4/site-packages/Django-1.8.2-py3.4.egg/django/db/models/query.py", line 141, in __repr__
return repr(data)
File "/usr/local/lib/python3.4/site-packages/Django-1.8.2-py3.4.egg/django/db/models/base.py", line 496, in __repr__
u = six.text_type(self)
File "/home/oracle/jrlin/smc/rdm/models.py", line 17, in __str__
return '%s %s %s %s %s %s' % (self.filesystem, self.osdevice, self.lun_name, self.lun_id, self.wwn, self.lun_size)
AttributeError: 'RDMInfo' object has no attribute 'inst_host'
已解决
感谢大家的评论,这是我的错误,最初我输入错误,RDMInfo模型的return命令中出现了一个不需要的属性“self.inst_host”,删除它后,我应该再次执行migrate并重新打开python shell。在完成迁移并重新打开外壳后,它可以正常工作,谢谢 没有理由您发布的代码会引发此错误。您确定Python/Django shell中没有导入以前版本的代码吗?如果关闭shell并重新启动它,错误是否会持续?我只是执行了代码进行检查,正如@brunodesshuilliers所说的,它是有效的。我猜你在某处有其他混合的旧模型或数据!我已尝试删除整个项目并重新创建,然后再次执行,但相同的错误仍然存在。您发布的代码没有理由引发此错误。您确定Python/Django shell中没有导入以前版本的代码吗?如果关闭shell并重新启动它,错误是否会持续?我只是执行了代码进行检查,正如@brunodesshuilliers所说的,它是有效的。我猜你在某处有其他混合的旧模型或数据!我试图删除整个项目并重新创建,然后再次执行,但相同的错误仍然存在。
from django.contrib import admin
from .models import Instance, RDMInfo
class RDMInline(admin.TabularInline):
model = RDMInfo
extra = 1
class RDMAdmin(admin.ModelAdmin):
fields = ['inst_host']
inlines = [RDMInline]
admin.site.register(Instance, RDMAdmin)