【发布时间】:2011-08-06 00:32:00
【问题描述】:
我有一个模型帖子,我想在模型收藏夹的管理员中显示其数据。
后模型:
class Post(models.Model):
nickname = models.CharField(max_length=50, default="anonymous")
def __unicode__(self):
return self.id
最喜欢的型号:
class Favorite(models.Model):
user = models.ForeignKey(User, unique=False)
post = models.ForeignKey(Post, unique=False)
def __unicode__(self):
return self.user.username
def get_post_nickname(self):
return self.post.nickname
最喜欢的管理员:
class FavoriteAdmin(admin.ModelAdmin):
#fields = ('user', 'get_post_nickname')
list_display= ('user', 'post')
def save_model(self, request, obj, form, change):
obj.save()
admin.site.register(Favorite, FavoriteAdmin)
-
如果我这样使用代码,当我尝试通过其管理员添加收藏夹时,我会收到以下错误:
渲染时捕获 TypeError:强制转换为 Unicode:需要字符串或缓冲区,找到 int
好的,所以它不喜欢显示整数,所以我想我只显示昵称,因为它是 Charfield。我取消了 FavoriteAdmin() 中的第一行的注释以调用 FavoriteModel.get_post_nickname()。现在我收到以下错误:
“FavoriteAdmin.fields”指的是表单中缺少的字段“get_post”。
如何同时解决 #1 和 #2?不能在 fields() 中调用方法吗?我以为是因为 list_display() 接受了一个方法。
【问题讨论】:
-
我认为这里有一个错误。我肯定写了
2. OK so it doesn't like to display an Integer,,但不知何故,数字“2”显示为“1”,所以有两个数字“1”。很奇怪。 -
list_display中get_post_id是什么?
-
糟糕,对不起!我已将其更改为“发布”,但没有正确复制粘贴。我的错。
-
在分解您的有序列表的报价之前放置一个空格,以保持编号正确。
标签: django django-admin admin