1

models.py有以下课程:

class TodoList(models.Model):
    id = models.AutoField(primary_key=True)

    def __unicode__(self):
        return self.id

admin.py包含以下几行:

from django.contrib import admin
from todolist.models import TodoList

class TodoListAdmin(admin.ModelAdmin):
    readonly_fields = ('id',)

admin.site.register(TodoList, TodoListAdmin)

但是,在 Django 1.5.1 admin 中,id没有显示为只读。相反,我只是显示(None)。如何自动将id我创建的对象显示为只读?

在此处输入图像描述

4

2 回答 2

5

通常在您保存之前它没有 ID。

请遵循以下代码,它一定会帮助您克服无(显示数据)。

模型.py

class A(models.Model):
    a = models.AutoField(primary_key=True)

    def __str__(self):
        return str(self.a)

管理员.py

class AAdmin(admin.ModelAdmin):
    list_display = ['a']
    readonly_fields = ['a_display']

    def a_display(self, obj):
        if obj.a is None:
            a = A.objects.all().order_by('-a')[:1]
            if a:
                return a[0].a + 1
            else:
                return 0
        else:
            return obj.a

admin.site.register(A, AAdmin)

请检查上面的代码。如果有任何问题,请发表评论。

于 2013-07-17T08:16:18.280 回答
3

在您保存之前,它没有 ID。如果您要添加一个新的,显示“无”是正确的。

于 2013-07-16T10:10:01.853 回答