我正在尝试将Django项目从迁移Python 2.7/Django 1.11到Python 3.7/Django 2.1。
我对一个问题有些困惑。
Django 2.1将models.ForeignKey(...)项目中的所有代码字符串标记为错误:
TypeError: __init__() missing 1 required positional argument: 'on_delete'
Run Code Online (Sandbox Code Playgroud)
这是因为因为Django 2.x,所以'on_delete'方法是ForeignKey字段的必需项(尝试在带有条目的子表之后添加父表时,获取TypeError:__init __()缺少1个必需的位置参数:'on_delete')
如果您将阅读这篇文章,则解决方案非常简单,您只需添加以下'on_delete'选项之一,例如:
models.ForeignKey(..., on_delete=models.CASCADE,)
但是,Django不仅抱怨实际'models.py'文件,而且抱怨所有(!)迁移,其中包括"ForeignKey"添加或更改的字段。
所以我的问题是,在中修改旧的迁移文件是否安全Django?在这种情况下我该怎么办?
我想在我的 django 项目中添加管理员更改的日志记录。我已经通过 LogEntry 模型完成了其中的一些工作:
from django.contrib.admin.models import LogEntry
class LogEntryAdmin(admin.ModelAdmin):
list_display = ('__str__', 'action_time', 'user', 'content_type', 'object_id', 'object_repr', 'action_flag', 'change_message')
list_filter = ('content_type',)
search_fields = ['user__username',]
date_hierarchy = 'action_time'
admin.site.register(LogEntry, LogEntryAdmin)
Run Code Online (Sandbox Code Playgroud)
这很棒,如果我更改数据库中某个对象的某些字段,我可以看到该操作的日志条目。但是在此日志条目中,我只能看到“字段已更改”,并且我还想查看此字段的初始值和结果值。我怎样才能实现这个功能?