Django版本:1.8.4 Python版本:2.7.10 我的django模型如下: 样/ models.py
from django.db import models
class Kind(models.Model):
id = models.IntegerField(null=False, primary_key=True)
name = models.CharField(max_length=64, null=False, default="default kind name")
create_time = models.DateField(auto_now=True, auto_created=True)
游戏/ models.py
from django.db import models
from kind import models as kind_models
class Game(models.Model):
id = models.IntegerField(primary_key=True)
kind = models.ForeignKey(kind_models.Kind)
name = models.CharField(max_length=64, null=False, default="default game")
description = models.TextField(null=False, default="default description")
create_date = models.DateField(auto_created=True, auto_now=True)
sale_date = models.DateField()
游戏/ amdin.py
from django.contrib import admin
from game import models as game_models
class AuthorAdmin(admin.ModelAdmin):
list_display = ('id', 'get_kind', 'name', 'description', 'create_date', 'sale_date')
search_fields = ('id', 'get_kind', 'name', 'description', 'create_date', 'sale_date')
list_filter = ('kind__name', 'name', 'create_date', 'sale_date')
ordering = ('id',)
fields = ('id', 'get_kind', 'name', 'description', 'sale_date')
def get_kind(self, obj):
return obj.kind.name
get_kind.short_description = 'kind'
get_kind.empty_value_display = 'not value set'
admin.site.register(game_models.Game, AuthorAdmin)
我成功运行我的应用程序并查看管理员没有任何错误或警告。但是,当我点击add game
时,网页会显示一些错误:
FieldError at /admin/game/game/add/
Unknown field(s) (get_kind) specified for Game. Check fields/fieldsets/exclude attributes of class AuthorAdmin.
Request Method: GET
Request URL: http://0.0.0.0:8000/admin/game/game/add/
Django Version: 1.8.4
Exception Type: FieldError
Exception Value:
Unknown field(s) (get_kind) specified for Game. Check fields/fieldsets/exclude attributes of class AuthorAdmin.
事实上,我不擅长django,我只是一个django初学者。
答案 0 :(得分:0)
当模型对象本身只是“善意”时,您在Django管理员中将模型对象引用为“get_kind”。所以就像管理员中的“fields =”一样,它应该是fields =('id','kind','name'.... etc
答案 1 :(得分:0)
您已将get_kind
设置为search_fields
和fields
,但这不是您模型上的实际字段。你不能这样做(特别是在字段中,因为你不能指定一些功能)。您应该在kind__name
中指定search_fields
而在kind
指定fields
。
如果您真的想要显示列中的值,可以将其作为模型中的属性并将其放在read_only
中。