Django admin:默认模型显示问题

发布于 2024-10-16 05:19:12 字数 194 浏览 2 评论 0原文

在 django 模型中,如果我们有
def __unicode__(self): 然后它将用作默认显示模型的方式

现在在 django admin 中,我想要一个自定义显示字段(将此对象显示为 url,以便可以导航到此对象),但我无法更改用于其他目的的 unicode 方法。我该怎么办?

In django models, if we have
def __unicode__(self): then it will be used as how you want to display the model by default

Now in django admin, I want to have a custmized display field(showing this object as an url so can navigate to this object), but I can't change unicode method for it used for other purpose. What do I supposed to do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浮光之海 2024-10-23 05:19:13

不要将 __unicode__ 用于设置便捷 URL 等目的。

这将掩盖您打印的对象名称以用于任何其他目的。

您尝试从哪个视图创建链接?从变更列表视图?从变化来看?来自外键?

一般来说,您可以简单地在模型(或 ModelAdmin)上定义任何方法,返回完整的 HTML 链接 ,设置 allow_tags = True,并在您的管理字段中引用它。

# models method
def admin_url(self):
    return '<a href="%s">Edit Model</a>' % the_url
admin_url.allow_tags = True


# ModelAdmin method, through ForeignKey
def admin_url(self, obj):
   return '<a href="%s">Edit Model</a>' % obj.foreignkey.url
admin_url.allow_tags = True

Don't use __unicode__ for a purpose like setting a convenience URL.

That will obscure your printed object name for any other purpose.

From which view are you trying to create a link? From the changelist view? From the change view? From a foreign key?

In general, you can simply define any method on your model (or ModelAdmin), that returns a full HTML link <a href=, set allow_tags = True, and refer to it in your admin fields.

# models method
def admin_url(self):
    return '<a href="%s">Edit Model</a>' % the_url
admin_url.allow_tags = True


# ModelAdmin method, through ForeignKey
def admin_url(self, obj):
   return '<a href="%s">Edit Model</a>' % obj.foreignkey.url
admin_url.allow_tags = True
我爱人 2024-10-23 05:19:13

我同意这些答案,但在我的机器上不起作用。

我正在使用Python3和Django1.8,并尝试使用这个。

class MyModel(models.Model):

    name = models.CharField(max_length=60)

    def __str__(self):
        return 'MyModel: {}'.format(self.name)

I agree with those answers, but on my machine just not working.

I was using Python3 and Django1.8, and try to use this.

class MyModel(models.Model):

    name = models.CharField(max_length=60)

    def __str__(self):
        return 'MyModel: {}'.format(self.name)
心欲静而疯不止 2024-10-23 05:19:12

您可以为管理类创建自定义方法


class SomeModelAdmin(admin.ModelAdmin):
    list_display = ('__unicode__', 'active_status')

    def active_status(self, obj):
        if obj.profile.is_active:
            return """One"""
        return """Two"""

    active_status.allow_tags = True
    active_status.description = ""

这只是非常简单的示例,因此您可以将逻辑放入此函数中
您还可以返回一些html代码

You can create a custom method for admin class


class SomeModelAdmin(admin.ModelAdmin):
    list_display = ('__unicode__', 'active_status')

    def active_status(self, obj):
        if obj.profile.is_active:
            return """One"""
        return """Two"""

    active_status.allow_tags = True
    active_status.description = ""

This is just very simple example, so you can put your logic into this function
You can also return some html code

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文