gpt4 book ai didi

Django 无法以更改形式显示 model.id?

转载 作者:行者123 更新时间:2023-12-02 08:17:59 25 4
gpt4 key购买 nike

我有一个模型帖子,我想在模型收藏夹的管理中显示其数据。

发布模型:

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)
  1. 如果我这样使用代码,当我尝试通过其管理员添加收藏夹时,我会收到以下错误:

    Caught TypeError while rendering: coercing to Unicode: need string or buffer, int found

  2. 好的,所以它不喜欢显示整数,所以我想我只显示昵称,因为它是 Charfield。我取消了FavoriteAdmin() 中第一行的注释以调用FavoriteModel.get_post_nickname()。现在我收到以下错误:

'FavoriteAdmin.fields' refers to field 'get_post' that is missing from the form.

如何解决#1 和#2?难道不能调用 fields() 中的方法吗?我认为这是因为 list_display() 接受一个方法。

最佳答案

  1. 我通常这样做:

    class Post(models.Model):
    nickname = models.CharField(max_length=50, default="anonymous")

    def __unicode__(self):
    return u"%s" % self.id
  2. 字段 ( docs ) 是如何控制管理“添加”和“更改”页面的布局。对于您来说,能够在不只是用于显示的字段列表中包含方法是没有意义的。因此 list_display 允许您包含方法。

关于Django 无法以更改形式显示 model.id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5671826/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com