DateTimeField已存入数据库但AdminSite显示为null问题求助
修复Django Admin中DateTimeField显示为null的问题
以下是针对该问题的具体修复步骤:
检查Admin类的字段配置
确保模型Admin类的list_display属性中包含正确的字段名,注意大小写必须和模型中的字段完全一致。比如模型里定义的是ordered_date,Admin里不能写成Ordered_date。示例代码:from django.contrib import admin from .models import YourModel class YourModelAdmin(admin.ModelAdmin): list_display = ('id', 'ordered_date', ...) # 确保ordered_date在这里 admin.site.register(YourModel, YourModelAdmin)验证模型字段定义
检查模型中DateTimeField的定义是否正确:如果使用auto_now_add=True,它会在对象首次创建时自动设置当前时间;如果是手动赋值,要确认在保存对象前已经正确设置了该字段的值,且没有后续代码覆盖这个值。示例:from django.db import models class YourModel(models.Model): # 自动赋值创建时间 ordered_date = models.DateTimeField(auto_now_add=True) # 手动赋值的情况 # ordered_date = models.DateTimeField(null=False)清除缓存并重启服务
运行以下命令清除Django缓存(适用于Django 4.2及以上版本),然后重启Django服务器,刷新Admin页面:python manage.py clearcache检查Admin的自定义逻辑
如果你在Admin类中自定义了get_queryset或者字段显示方法(比如def get_ordered_date(self, obj)),要确认这些方法没有错误地返回None或null值。确认数据库字段匹配
检查数据库中对应的ordered_date字段类型是否为datetime类,和模型定义的DateTimeField一致,避免类型不匹配导致的显示异常。
内容的提问来源于stack exchange,提问作者Tien Le
相关产品推荐
相关产品推荐

