Django ForeignKey&x27;对象没有属性';型号';
我有两个模型(eisfiles和AuthPermissionAdd),我正在尝试添加一对多关系,如下面的代码所示。但由于某些原因,我得到的“ForeignKey”对象没有属性“model”。请帮助我哪里做错了Django ForeignKey&x27;对象没有属性';型号';,django,django-models,django-admin,Django,Django Models,Django Admin,我有两个模型(eisfiles和AuthPermissionAdd),我正在尝试添加一对多关系,如下面的代码所示。但由于某些原因,我得到的“ForeignKey”对象没有属性“model”。请帮助我哪里做错了 class eisfiles(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) htmlname = models.CharField(max_length=100)
class eisfiles(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
htmlname = models.CharField(max_length=100)
meterId = models.CharField(max_length=100)
esiid = models.CharField(max_length=100)
metermultiplier = models.CharField(max_length=100)
DbName = models.CharField(max_length=100,default='test')
DbTable = models.CharField(max_length=100)
address=models.CharField(max_length=100)
def __str__(self):
return self.htmlname
def __str__(self):
return self.DbName
def __str__(self):
return self.address
class AuthPermissionAdd(models.Model):
user_id = models.CharField(max_length=500)
eisfiles_id = models.ForeignKey(eisfiles)
temp_id_id_id = models.IntegerField(blank=True, null=True)
# print eisfiles_id
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\core\management\commands\runserver.py", line 109, in inne
autoreload.raise_last_exception()
File "C:\Python27\lib\site-packages\django\utils\autoreload.py", line 249, in raise_last_exception
six.reraise(*_exception)
File "C:\Python27\lib\site-packages\django\utils\autoreload.py", line 226, in wrapper
fn(*args, **kwargs)
File "C:\Python27\lib\site-packages\django\__init__.py", line 18, in setup
apps.populate(settings.INSTALLED_APPS)
File "C:\Python27\lib\site-packages\django\apps\registry.py", line 108, in populate
app_config.import_models(all_models)
File "C:\Python27\lib\site-packages\django\apps\config.py", line 202, in import_models
self.models_module = import_module(models_module_name)
File "C:\Python27\Lib\importlib\__init__.py", line 37, in import_module
__import__(name)
File "D:\python\project\energy_style\myapp\login\models.py", line 332, in <module>
class AuthPermissionAdd(models.Model):
File "D:\python\project\energy_style\myapp\login\models.py", line 338, in AuthPermissionAdd
print eisfiles_id;
File "C:\Python27\lib\site-packages\django\utils\six.py", line 842, in <lambda>
klass.__str__ = lambda self: self.__unicode__().encode('utf-8')
File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py", line 188, in __str__
model = self.model
AttributeError: 'ForeignKey' object has no attribute 'model'
类文件(models.Model):
user=models.OneToOneField(用户,on_delete=models.CASCADE)
htmlname=models.CharField(最大长度=100)
meterId=models.CharField(最大长度=100)
ESID=models.CharField(最大长度=100)
metermultiplier=models.CharField(最大长度=100)
DbName=models.CharField(最大长度=100,默认值为=“测试”)
DbTable=models.CharField(最大长度=100)
地址=models.CharField(最大长度=100)
定义(自我):
返回self.htmlname
定义(自我):
返回self.DbName
定义(自我):
返回自我地址
类AuthPermissionAdd(models.Model):
用户id=models.CharField(最大长度=500)
eisfiles\u id=models.ForeignKey(eisfiles)
temp\u id\u id\u id=models.IntegerField(blank=True,null=True)
#打印EISU id文件
回溯(最近一次呼叫最后一次):
包装器中的文件“C:\Python27\lib\site packages\django\utils\autoreload.py”,第226行
fn(*args,**kwargs)
inne中第109行的文件“C:\Python27\lib\site packages\django\core\management\commands\runserver.py”
autoreload.raise\u last\u异常()
文件“C:\Python27\lib\site packages\django\utils\autoreload.py”,第249行,在raise\u last\u异常中
六、重放(*_例外)
包装器中的文件“C:\Python27\lib\site packages\django\utils\autoreload.py”,第226行
fn(*args,**kwargs)
文件“C:\Python27\lib\site packages\django\\uuuuu init\uuuuuuu.py”,第18行,在安装程序中
应用程序。填充(设置。已安装的应用程序)
文件“C:\Python27\lib\site packages\django\apps\registry.py”,第108行,填充
app_config.import_models(所有_models)
文件“C:\Python27\lib\site packages\django\apps\config.py”,第202行,在import\u模型中
self.models\u module=导入模块(models\u module\u name)
文件“C:\Python27\Lib\importlib\\uuuu init\uuuuu.py”,第37行,在导入模块中
__导入(名称)
文件“D:\python\project\energy\u style\myapp\login\models.py”,第332行,在
类AuthPermissionAdd(models.Model):
文件“D:\python\project\energy\u style\myapp\login\models.py”,第338行,在AuthPermissionAdd中
打印EISU id文件;
文件“C:\Python27\lib\site packages\django\utils\six.py”,第842行,在
klass.\uuuu str\uuuu=lambda self:self.\uuuuuu unicode\uuuuu().encode('utf-8'))
文件“C:\Python27\lib\site packages\django\db\models\fields\\ uuuu init\ uuuu.py”,第188行,在__
model=self.model
AttributeError:“ForeignKey”对象没有属性“model”
若我从模型中删除print语句并尝试添加项,将显示以下错误
Environment:
Request Method: GET
Request URL: http://localhost:9090/admin/login/authpermissionadd/add/
Django Version: 1.9.4
Python Version: 2.7.11
Installed Applications:
['login',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rolepermissions']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template error:
In template C:\Python27\lib\site-packages\django\contrib\admin\templates\admin\change_form.html, error at line 33
__str__ returned non-string (type NoneType) 23 : {% endblock %}
24 : {% endif %}
25 :
26 : {% block content %}<div id="content-main">
27 : {% block object-tools %}
28 : {% if change %}{% if not is_popup %}
29 : <ul class="object-tools">
30 : {% block object-tools-items %}
31 : <li>
32 : {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %}
33 : <a href="{% add_preserved_filters histo ry_url %}" class= "historylink">{% trans "History" %}</a>
34 : </li>
35 : {% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %}
36 : {% endblock %}
37 : </ul>
38 : {% endif %}{% endif %}
39 : {% endblock %}
40 : <form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %}
41 : <div>
42 : {% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %}
43 : {% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %}
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
174. response = self.process_exception_by_middleware(e, request)
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
172. response = response.render()
File "C:\Python27\lib\site-packages\django\template\response.py" in render
160. self.content = self.rendered_content
File "C:\Python27\lib\site-packages\django\template\response.py" in rendered_content
137. content = template.render(context, self._request)
File "C:\Python27\lib\site-packages\django\template\backends\django.py" in render
95. return self.template.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
206. return self._render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in _render
197. return self.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
992. bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated
959. return self.render(context)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render
173. return compiled_parent._render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in _render
197. return self.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
992. bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated
959. return self.render(context)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render
173. return compiled_parent._render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in _render
197. return self.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
992. bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated
959. return self.render(context)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render
69. result = block.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
992. bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated
959. return self.render(context)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render
69. result = block.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
992. bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated
959. return self.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render
220. nodelist.append(node.render_annotated(context))
File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated
959. return self.render(context)
File "C:\Python27\lib\site-packages\django\template\loader_tags.py" in render
209. return template.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
208. return self._render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in _render
197. return self.nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
992. bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated
959. return self.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render
220. nodelist.append(node.render_annotated(context))
File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated
959. return self.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render
220. nodelist.append(node.render_annotated(context))
File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated
959. return self.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render
326. return nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
992. bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated
959. return self.render(context)
File "C:\Python27\lib\site-packages\django\template\defaulttags.py" in render
326. return nodelist.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
992. bit = node.render_annotated(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render_annotated
959. return self.render(context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render
1049. return render_value_in_context(output, context)
File "C:\Python27\lib\site-packages\django\template\base.py" in render_value_in_context
1026. value = force_text(value)
File "C:\Python27\lib\site-packages\django\utils\encoding.py" in force_text
78. s = six.text_type(s)
File "C:\Python27\lib\site-packages\django\utils\html.py" in <lambda>
381. klass.__unicode__ = lambda self: mark_safe(klass_unicode(self))
File "C:\Python27\lib\site-packages\django\forms\boundfield.py" in __str__
43. return self.as_widget()
File "C:\Python27\lib\site-packages\django\forms\boundfield.py" in as_widget
101. return force_text(widget.render(name, self.value(), attrs=attrs))
File "C:\Python27\lib\site-packages\django\contrib\admin\widgets.py" in render
291. 'widget': self.widget.render(name, value, *args, **kwargs),
File "C:\Python27\lib\site-packages\django\forms\widgets.py" in render
528. options = self.render_options(choices, [value])
File "C:\Python27\lib\site-packages\django\forms\widgets.py" in render_options
554. for option_value, option_label in chain(self.choices, choices):
File "C:\Python27\lib\site-packages\django\forms\models.py" in __iter__
1110. yield self.choice(obj)
File "C:\Python27\lib\site-packages\django\forms\models.py" in choice
1117. return (self.field.prepare_value(obj), self.field.label_from_instance(obj))
File "C:\Python27\lib\site-packages\django\forms\models.py" in label_from_instance
1180. return smart_text(obj)
File "C:\Python27\lib\site-packages\django\utils\encoding.py" in smart_text
42. return force_text(s, encoding, strings_only, errors)
File "C:\Python27\lib\site-packages\django\utils\encoding.py" in force_text
80. s = six.text_type(bytes(s), encoding, errors)
Exception Type: TypeError at /admin/login/authpermissionadd/add/
Exception Value: __str__ returned non-string (type NoneType)
环境:
请求方法:获取
请求URL:http://localhost:9090/admin/login/authpermissionadd/add/
Django版本:1.9.4
Python版本:2.7.11
已安装的应用程序:
['login',
“django.contrib.admin”,
“django.contrib.auth”,
“django.contrib.contenttypes”,
“django.contrib.sessions”,
“django.contrib.messages”,
“django.contrib.staticfiles”,
“角色权限”]
已安装的中间件:
['django.middleware.security.SecurityMiddleware',
“django.contrib.sessions.middleware.SessionMiddleware”,
'django.middleware.common.CommonMiddleware',
“django.middleware.csrf.CsrfViewMiddleware”,
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.xframeoptions中间件']
模板错误:
在模板C:\Python27\lib\site packages\django\contrib\admin\templates\admin\change\u form.html中,第33行出现错误
__str_uu返回非字符串(类型NoneType)23:{%endblock%}
24:{%endif%}
25 :
26:{%block content%}
27:{%block object tools%}
28:{%if-change%}{%if-not是_-popup%}
29:
30:{%block object tools items%}
31:-
32:{%url选择| admin_urlname:'history'original.pk | admin_urlquote作为history_url%}
33 :
34:
35:{%if有绝对url%}{%endif%}
36:{%endblock%}
37:
38:{%endif%}{%endif%}
39:{%endblock%}
40:{%csrf_令牌%}{%block form_top%}{%endblock%}
41 :
42:{%if是_popup%}{%endif%}
43:{%if to_field%}{%endif%}
回溯:
get\U响应中的文件“C:\Python27\lib\site packages\django\core\handlers\base.py”
174.response=self.process\u异常\u由\u中间件(e,请求)
get\U响应中的文件“C:\Python27\lib\site packages\django\core\handlers\base.py”
172.response=response.render()
render中的文件“C:\Python27\lib\site packages\django\template\response.py”
160.self.content=self.rendered\u content
呈现内容中的文件“C:\Python27\lib\site packages\django\template\response.py”
137.content=template.render(上下文、自请求)
render中的文件“C:\Python27\lib\site packages\django\template\backends\django.py”
95.返回self.template.render(上下文)
render中的文件“C:\Python27\lib\site packages\django\template\base.py”
206.返回self.\u呈现(上下文)
_render中的文件“C:\Python27\lib\site packages\django\template\base.py”
197.返回self.nodelist.render(上下文)
render中的文件“C:\Python27\lib\site packages\django\template\base.py”
992.bit=node.render_注释(上下文)
render_注释中的文件“C:\Python27\lib\site packages\django\template\base.py”
959.返回self.render(上下文)
render中的文件“C:\Python27\lib\site packages\django\template\loader\u tags.py”
173.返回编译的\u父对象。\u呈现(上下文)
_render中的文件“C:\Python27\lib\site packages\django\template\base.py”
197
from django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible
class eisfiles(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
...
def __str__(self):
return unicode(self.address) # use str() in Python 3