【问题标题】:Django - Some Models are not Editable/Createable in Django-AdminDjango - 某些模型在 Django-Admin 中不可编辑/可创建
【发布时间】:2016-12-16 04:06:19
【问题描述】:

我的一个应用中有 5 个模型

报告报告数据客户..等

由于某种原因,自从我上次部署以来,我无法再更改或创建新的 ReportCustomer 对象,但其他一切正常吗?知道为什么会发生这种情况吗?管理页面在add 链接上什么也不输出,change 链接也什么也不输出。

Django==1.9.1

我已尝试重新启动服务器、运行迁移和重新启动数据库。开发版工作正常。好奇怪的问题。

如您所见,即使该对象已在数据库中填充了大量数据,也没有字段。

这是我的报告模型:

class Report(models.Model):
    public_uuid = models.UUIDField(max_length=256,default=util.make_uuid,unique=True)
    customer = models.ForeignKey('Customer')
    has_payed = models.BooleanField(default=False)
    #... etc

这是我在管理员中注册项目的方式:

admin.site.register(Customer)
admin.site.register(Report)
admin.site.register(...etc)

我的其他 3 个模型工作正常。这两个模型与其他三个模型(工作并且可以使用管理工具编辑)之间的唯一区别是这两个模型附加了@property 和@staticmethod 方法。

【问题讨论】:

  • 如果您尝试删除它们会怎样?
  • @levi 它可以很好地删除项目
  • 如何将模型导入admin.py 文件?
  • 看起来好像有什么东西导致了更改列表视图失败,Django 管理员正在默默地吞下这个错误。您没有显示足够的信息来重现错误。您可以尝试在 shell 中运行 print(list(Report.objects.all())),以查看是否会触发相同的错误,但带有回溯。
  • @Alasdair 所有项目都打印得很好。我还能做些什么来调试?

标签: python django django-models


【解决方案1】:

刚刚遇到这个问题

当在字段定义中使用auto_now_add=Trueeditable=False 时,管理员不会显示相应的字段,除非您在管理表单定义的readonly_fields 中指定它们。

如果在models.py中

class TransmissionLog(models.Model):
     dataSource = models.ForeignKey(Browser, editable=False)
     dateCreated = models.DateTimeField(auto_now_add=True, editable=False)

那么 admin.py 需要

class TransmissionAdminManager(admin.ModelAdmin):
    readonly_fields = ['dataSource', 'dateCreated']
admin.site.register(TransmissionLog, TransmissionAdminManager)

【讨论】:

    猜你喜欢
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2014-07-10
    • 2012-10-15
    • 2011-12-13
    • 2018-01-10
    • 1970-01-01
    相关资源
    最近更新 更多