- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个让我摸不着头脑。我只是向模型添加了一个新字段。
class Image(BaseModel):
url = models.URLField(max_length=1000, null=True)
content_type = models.ForeignKey(ContentType, on_delete=models.SET_NULL, null=True)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey()
# new field added below
class Type(models.TextChoices):
HEADER = 'HEADER', _('Header')
type = models.CharField(
max_length=20,
choices=Type.choices,
null=True,
blank=True
)
class Meta:
db_table = 'Image'
然后我运行了 python manage.py makemigrations
,然后运行了 python manage.py migrate
。这是成功的,我可以在我的数据库中的表上看到新字段。 django_migrations
表中的信息看起来是正确的。
这是我的迁移文件:
# Generated by Django 3.0.5 on 2022-03-23 12:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('example', '0082_auto_20220322_1937'),
]
operations = [
migrations.AddField(
model_name='image',
name='type',
field=models.CharField(blank=True, choices=[('HEADER', 'Header')], max_length=20, null=True),
),
]
这是我的图像管理文件:
from .base import BaseModelAdmin
class ImageAdmin(BaseModelAdmin):
list_display = ('id', 'url', 'content_type', 'content_object', 'type', 'is_deleted')
list_filter = ('is_deleted',)
这是 ImageAdmin 继承自的 BaseModelAdmin:
from django.contrib.contenttypes.admin import GenericTabularInline
from django.contrib import admin
class BaseModelAdmin(admin.ModelAdmin):
def get_actions(self, request):
actions = super(BaseModelAdmin, self).get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions
def has_delete_permission(self, request, obj=None):
return False
class BaseStackedInline(admin.StackedInline):
def get_actions(self, request):
actions = super(BaseModelAdmin, self).get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions
def has_delete_permission(self, request, obj=None):
return False
class BaseGenericTabularInline(GenericTabularInline):
def get_actions(self, request):
actions = super(BaseModelAdmin, self).get_actions(request)
if 'delete_selected' in actions:
del actions['delete_selected']
return actions
def has_delete_permission(self, request, obj=None):
return False
这是 Image 模型继承自的 BaseModel:
from django.db import models
class BaseManager(models.Manager):
def get_or_none(self, *args, **kwargs):
try:
return self.get(*args, **kwargs)
except self.model.DoesNotExist:
return None
class BaseModel(models.Model):
is_deleted = models.BooleanField(default=False)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
objects = BaseManager()
def __str__(self):
return F"ID: {self.id}"
class Meta:
abstract = True
我面临的问题是,当我在 django 管理中访问该模型页面时,我收到一个内部服务器错误,内容如下:
Traceback (most recent call last):
example_app | File "/usr/local/lib/python3.9/site-packages/django/contrib/admin/utils.py", line 262, in lookup_field
example_app | f = _get_non_gfk_field(opts, name)
example_app | File "/usr/local/lib/python3.9/site-packages/django/contrib/admin/utils.py", line 297, in _get_non_gfk_field
example_app | raise FieldDoesNotExist()
example_app | django.core.exceptions.FieldDoesNotExist
example_app |
example_app | During handling of the above exception, another exception occurred:
example_app |
example_app | Traceback (most recent call last):
example_app | File "/usr/local/lib/python3.9/site-packages/django/core/handlers/exception.py", line 34, in inner
example_app | response = get_response(request)
example_app | File "/usr/local/lib/python3.9/site-packages/django/core/handlers/base.py", line 145, in _get_response
example_app | response = self.process_exception_by_middleware(e, request)
example_app | File "/usr/local/lib/python3.9/site-packages/django/core/handlers/base.py", line 143, in _get_response
example_app | response = response.render()
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/response.py", line 105, in render
example_app | self.content = self.rendered_content
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/response.py", line 83, in rendered_content
example_app | return template.render(context, self._request)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/backends/django.py", line 61, in render
example_app | return self.template.render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 171, in render
example_app | return self._render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 163, in _render
example_app | return self.nodelist.render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 936, in render
example_app | bit = node.render_annotated(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 903, in render_annotated
example_app | return self.render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 150, in render
example_app | return compiled_parent._render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 163, in _render
example_app | return self.nodelist.render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 936, in render
example_app | bit = node.render_annotated(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 903, in render_annotated
example_app | return self.render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 150, in render
example_app | return compiled_parent._render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 163, in _render
example_app | return self.nodelist.render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 936, in render
example_app | bit = node.render_annotated(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 903, in render_annotated
example_app | return self.render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 62, in render
example_app | result = block.nodelist.render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 936, in render
example_app | bit = node.render_annotated(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 903, in render_annotated
example_app | return self.render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/loader_tags.py", line 62, in render
example_app | result = block.nodelist.render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 936, in render
example_app | bit = node.render_annotated(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/base.py", line 903, in render_annotated
example_app | return self.render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/contrib/admin/templatetags/base.py", line 33, in render
example_app | return super().render(context)
example_app | File "/usr/local/lib/python3.9/site-packages/django/template/library.py", line 214, in render
example_app | _dict = self.func(*resolved_args, **resolved_kwargs)
example_app | File "/usr/local/lib/python3.9/site-packages/django/contrib/admin/templatetags/admin_list.py", line 342, in result_list
example_app | 'results': list(results(cl)),
example_app | File "/usr/local/lib/python3.9/site-packages/django/contrib/admin/templatetags/admin_list.py", line 318, in results
example_app | yield ResultList(None, items_for_result(cl, res, None))
example_app | File "/usr/local/lib/python3.9/site-packages/django/contrib/admin/templatetags/admin_list.py", line 309, in __init__
example_app | super().__init__(*items)
example_app | File "/usr/local/lib/python3.9/site-packages/django/contrib/admin/templatetags/admin_list.py", line 232, in items_for_result
example_app | f, attr, value = lookup_field(field_name, result, cl.model_admin)
example_app | File "/usr/local/lib/python3.9/site-packages/django/contrib/admin/utils.py", line 273, in lookup_field
example_app | attr = getattr(obj, name)
example_app | File "/usr/local/lib/python3.9/site-packages/django/contrib/contenttypes/fields.py", line 243, in __get__
example_app | rel_obj = ct.get_object_for_this_type(pk=pk_val)
example_app | File "/usr/local/lib/python3.9/site-packages/django/contrib/contenttypes/models.py", line 175, in get_object_for_this_type
example_app | return self.model_class()._base_manager.using(self._state.db).get(**kwargs)
example_app | AttributeError: 'NoneType' object has no attribute '_base_manager'
我已经多次尝试恢复迁移并重新运行它。我也查看了其他类似的问题,但没有一个解决方案有效或解决了我的具体问题。
为什么会这样?
最佳答案
我怀疑添加新字段不是问题的原因 - 在您进行此更改的同时出现问题只是巧合。线索在回溯中:
File "/usr/local/lib/python3.9/site-packages/django/contrib/contenttypes/fields.py", line 243, in __get__
rel_obj = ct.get_object_for_this_type(pk=pk_val)
File "/usr/local/lib/python3.9/site-packages/django/contrib/contenttypes/models.py", line 175, in get_object_for_this_type
return self.model_class()._base_manager.using(self._state.db).get(**kwargs)
AttributeError: 'NoneType' object has no attribute '_base_manager'
具体来说,错误来自 contenttypes
框架 - 即你的 content_type
数据库中至少一个现有模型实例的字段已损坏。 model_class()
方法返回空值而不是模型类。
最可能的原因是您删除了一个以前由您的通用外键引用的模型,或者您已经从 INSTALLED_APPS
中删除了提供该模型的应用程序。 .
您应该能够通过运行 remove_stale_contenttypes
来解决问题。管理命令。如果这不起作用,那么可能需要手动检查数据库以找出问题所在(清空整个数据库也有助于验证是否是问题所在)。
FieldDoesNotExist
异常不是问题。它将是 properly handled如果您的内容类型没有问题,则由 Django 提供。
旁注:我认为这与您的问题没有任何关系,但使用与 Python 冲突的名称不是一个好主意 built-in functions因为它会导致困惑的行为。
关于python - 为什么 Django Admin 模型页面在成功迁移后引发 FieldDoesNotExist 异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71587617/
我正在使用 SharePoint Online 并使用 Windows Azure 托管访问 SPO 的进程。 我们已将启动任务添加到 Azure 角色以安装 http://www.microsoft
我有一个函数,它获取包含时间的源文件(csv 文件),读取它,然后按顺序对行进行排序并将它们写入目标文件中。但是,如果源 csv 文件不存在,我需要引发 FileNotFoundError。我之前曾引
我试图在目录不存在时引发错误,然后再打开该目录中的文件。根据this response我应该为我的问题使用最具体的异常构造函数,我认为它是 NotADirectoryError。但是运行下面的代码我得
在编码/开发生命的一天或另一天,我们确实遇到了这个特殊的情况,这是最常见的异常(exception)之一。我的问题是关于的而不是。为什么(我知道当我们尝试访问实际上指向null的引用变量的属性时会引发
我想知道在 python 中是否可以在一个 except block 中引发异常并在稍后的 except block 中捕获它。我相信其他一些语言默认会这样做。 这是它的样子" try: som
我有以下代码: br = mechanize.Browser() br._factory.is_html = True br.form = mechanize._form.ParseString(''
我刚刚发现,如果您有一个引发 TOO_MANY_ROWS 异常的 SELECT INTO,该变量仍会从查询检索到的第一条记录中分配值。这是预期的行为吗? 这是我的例子: for co in my_cu
当 SSH 显示 WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 我知道当您重新安装远程服务器时会发生这种情况,但我尝试列出 其他原因 . 我知道如何
我有一个枚举和一个 EnumMap . 我将 map 放入一个类中以隐藏“字节”值。所以我有一个set(Parameter, int)和set(Parameter, boolean)方法。 publi
在什么情况下会redis-py引发以下 AttributeError 异常? redis-py 不是设计来引发仅基于 redis.exceptions.RedisError 的异常吗? 什么是合理的处
可悲的是,对此异常的引用通常具有异国情调,并且可能发生在您例如通过 Assembly.GetTypes() 枚举类型- 举个例子,它发生在我们的一个部署上,但同一组程序集在集成服务器上运行良好。 为了
我正在为 Android 下的特定平板电脑克隆一个存储库并获取源代码,我必须执行一个 python 脚本。当我执行它时,我收到此错误消息: Traceback (most recent call la
首先,执行此操作(在运行 4.4.2 的 Nexus 5 上测试): 将 PRIORITY_LOW 通知传递给 Service.startForeground()。 观察通知不显示在状态栏中。 使用相
我尝试使用 AppEngine 的 python 模块 api 来获取使用基本缩放的模块的实例数。在我模块的 yaml 文件中,我明确设置了 max_instances 参数。我希望 get_num_
当我如下运行我的 spark python 代码时: import pyspark conf = (pyspark.SparkConf() .setMaster("local")
在我的系统上,一段适用于 Python 2 的代码不适用于 Python 3。 f = open("plotwidget.svg") svgData = f.read() xml_stream = Q
我是 PHP 和 SQL 的新手,但我正在创建一个登录系统。我遇到的问题是: You have an error in your SQL syntax; check the manual that c
我有一个使用 ebaysdk 库的 python 代码,当我运行代码并输入关键字进行搜索时,我得到了这个错误。 Traceback (most recent call last): File "eba
当我将表单数据发送到我的 Flask 应用程序时,出现以下错误。它说它将使用 UTF-8 编码,但语言环境已经是 UTF-8。这个错误是什么意思? /home/.virtualenvs/project
在python2.7中,跟随pympler example : from anotherfile import somefunction, somecustomclass from os import
我是一名优秀的程序员,十分优秀!