gpt4 book ai didi

python - Django:管理员在列出 bool 字段时出现 KeyError

转载 作者:太空宇宙 更新时间:2023-11-03 15:21:29 25 4
gpt4 key购买 nike

每当我决定在我的 list_display 中列出一个 bool 字段,例如“active”(参见示例)

class CompanyAdmin(admin.ModelAdmin):
fields = ['name', 'created']
list_display = ['name', 'active', 'created']

我收到以下错误...

KeyError at /admin/web/company/

'\x01'

这发生在我尝试列出的任何 bool 值上。我正在使用 grappelli 作为管理员皮肤。我在下面包含了完整的错误和我的模型。

型号:

class Company(models.Model):
companyid = models.CharField(max_length=255, primary_key=True, db_column='companyID')
name = models.CharField(max_length=105)
active = models.BooleanField(default=False)
created = models.DateTimeField()
modified = models.DateTimeField(null=True, blank=True)
class Meta:
db_table = u'company'

错误: 环境:

Request Method: GET
Request URL: http://127.0.0.1:8000/admin/web/company/

Django Version: 1.4.2
Python Version: 2.7.2
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.flatpages',
'django.contrib.messages',
'django.contrib.staticfiles',
'grappelli.dashboard',
'grappelli',
'django.contrib.admin',
'django.contrib.admindocs',
'web')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')


Template error:
In template /Users/user/Documents/workspace/Ares/grappelli/templates/admin/change_list.html, error at line 222

212 : {% blocktrans count cl.formset.errors|length as counter %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}


213 : </p>


214 : {{ cl.formset.non_form_errors }}


215 : {% endif %}


216 : <!-- MANAGEMENT FORM -->


217 : {% if cl.formset %}


218 : {{ cl.formset.management_form }}


219 : {% endif %}


220 : <!-- CHANGELIST-RESULTS -->


221 : {% block result_list %}


222 : {% result_list cl %}


223 : {% endblock %}


224 : </section>


225 : <!-- PAGINATION BOTTOM -->


226 : {% if not cl.result_count == 0 %}


227 : {% block pagination_bottom %}


228 : <div class="grp-module">


229 : <div class="grp-row">{% pagination cl %}</div>


230 : </div>


231 : {% endblock %}


232 : {% endif %}


Traceback:
File "/Library/Python/2.7/site-packages/django/core/handlers/base.py" in get_response
136. response = response.render()
File "/Library/Python/2.7/site-packages/django/template/response.py" in render
104. self._set_content(self.rendered_content)
File "/Library/Python/2.7/site-packages/django/template/response.py" in rendered_content
81. content = template.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
140. return self._render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in _render
134. return self.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/Library/Python/2.7/site-packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in render
123. return compiled_parent._render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in _render
134. return self.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/Library/Python/2.7/site-packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in render
123. return compiled_parent._render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in _render
134. return self.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/Library/Python/2.7/site-packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in render
62. result = block.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/Library/Python/2.7/site-packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/Library/Python/2.7/site-packages/django/template/loader_tags.py" in render
62. result = block.nodelist.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
823. bit = self.render_node(node, context)
File "/Library/Python/2.7/site-packages/django/template/debug.py" in render_node
74. return node.render(context)
File "/Library/Python/2.7/site-packages/django/template/base.py" in render
1178. _dict = func(*resolved_args, **resolved_kwargs)
File "/Library/Python/2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in result_list
278. 'results': list(results(cl))}
File "/Library/Python/2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in results
256. yield ResultList(None, items_for_result(cl, res, None))
File "/Library/Python/2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in __init__
248. super(ResultList, self).__init__(*items)
File "/Library/Python/2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in items_for_result
204. result_repr = display_for_field(value, f)
File "/Library/Python/2.7/site-packages/django/contrib/admin/util.py" in display_for_field
321. return _boolean_icon(value)
File "/Library/Python/2.7/site-packages/django/contrib/admin/templatetags/admin_list.py" in _boolean_icon
164. {True: 'yes', False: 'no', None: 'unknown'}[field_val])

Exception Type: KeyError at /admin/web/company/
Exception Value: '\x01'

最佳答案

我在现有的 MySQL 数据库上使用一些 Django 模型遇到了类似的问题,该数据库具有来自 Hibernate 的模型。它使用 BIT(1) 作为 bool 类型。只要您的 1 和 0 值在 Python 中显示为 \x01\x00 您就应该能够挽救下面的 BooleanField

这里有一些线索:

class MyBooleanField(models.BooleanField):

__metaclass__ = models.SubfieldBase

def get_internal_type(self):
return "MyBooleanField"

def db_type(self):
return 'bit(1)'

def to_python(self, value):
if value in (True, False): return value
if value in ('t', 'True', '1', '\x01'): return True
if value in ('f', 'False', '0', '\x00'): return False

def get_db_prep_value(self, value):
return 0x01 if value else 0x00

来自:http://djangosnippets.org/snippets/1869/

然后在你的模型中:

class Company(models.Model):
active = models.MyBooleanField(default=False)

关于python - Django:管理员在列出 bool 字段时出现 KeyError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14114698/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com