dot*_*tty 74 python django admin django-admin
为什么我的"日期"字段没有出现在管理系统中?
在我的admin.py文件中
from django.contrib import admin
from glasses.players.models import *
admin.site.register(Rating)
Run Code Online (Sandbox Code Playgroud)
而评级模型有一个名为"日期"的字段,如下所示
date = models.DateTimeField(editable=True, auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
但是在管理系统中,即使editable设置为,该字段也不会显示True.
有谁有想法吗?
Hun*_*ger 180
如果你真的想看到的管理面板日期,您可以添加readonly_fields在admin.py:
class RatingAdmin(admin.ModelAdmin):
readonly_fields = ('date',)
admin.site.register(Rating,RatingAdmin)
Run Code Online (Sandbox Code Playgroud)
您指定的任何字段将在可编辑字段后最后添加.要控制订单,您可以使用fields选项.
其他信息可从Django文档获得.
Sha*_*hin 47
我相信理由是该auto_now_add领域的谎言.
从这个答案:
设置了auto_now属性的任何字段也将继承editable = False,因此不会显示在管理面板中.
在文档中也提到:
如当前实现的那样,将auto_now或auto_now_add设置为True将导致该字段具有editable = False和blank = True set.
这确实有意义,因为如果在保存对象时将使用当前日期时间覆盖该字段,则没有理由使该字段可编辑.
Bra*_*rad 22
哈克少校:
如果你真的需要这样做(就像我一样)你可以通过immediatley将字段设置为"可编辑"来定义字段,如下所示:
class Point(models.Model):
mystamp=models.DateTimeField("When Created",auto_now_add=True)
mystamp.editable=True
Run Code Online (Sandbox Code Playgroud)
这将使该字段可编辑,因此您可以实际更改它.它似乎工作正常,至少与mysql支持引擎.我不能说certian是否有其他后备存储会使这些数据在数据库中不可变,因此在尝试编辑时会导致问题,因此请谨慎使用.
根据您的具体需求以及行为差异的细微差别,您可以执行以下操作:
from django.utils.timezone import now
class MyModel(models.Model):
date = models.DateTimeField(default=now)
Run Code Online (Sandbox Code Playgroud)
默认字段可以这种方式使用:https://docs.djangoproject.com/en/dev/ref/models/fields/#default
The default value for the field. This can be a value or a callable object. If callable it will be called every time a new object is created.
Run Code Online (Sandbox Code Playgroud)
这不会设置为可编辑 False
如果您希望任何字段在所有条目列表中可见(当您单击管理员人员中的模型时),而不是在打开该特定条目时可见 -
class RatingAdmin(admin.ModelAdmin):
list_display = ('name', 'date')
admin.site.register(Rating, RatingAdmin)
Run Code Online (Sandbox Code Playgroud)
“名称”是您的主要字段或您想要在管理面板中显示的任何其他字段。
这样您就可以指定您想要查看的所有列。
它可能与auto_now_add为true有关.也许代替用于捕获添加日期的参数,您可以覆盖模型保存方法,以在id为null时插入日期时间.
class Rating(models.Model):
....
def save(self, *args, **kwargs)
if not self.id:
self.date = datetime.datetime.now()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25490 次 |
| 最近记录: |