如何使管理员改变视图与一个字段可点击链接到obj

2024-10-01 07:10:32 发布

您现在位置:Python中文网/ 问答频道 /正文

如何使用指向用户对象或任何其他对象的字段可单击链接来创建“管理更改”视图?
比如:<a href="/admin/user/{{owner.id}}/change">{{owner.fullname}}</a>

当前只有id为的简单文本

from django.contrib import admin
from django.contrib.auth.models import User
from django.db import models


class Car(models.Model):
    owner = models.ForeignKey(User, related_name="cars", null=True, blank=True)

class CarAdmin(admin.ModelAdmin):
    pass


admin.site.register(Car, CarAdmin)

找到了许多列表视图的示例,但没有找到更改视图的示例。你知道吗

UPD:尝试将以下方法添加到CarAdmin中,但没有帮助。你知道吗

from django.utils.html import format_html


class CarAdmin(admin.ModelAdmin):

    def owner_change_url(self, obj):
        return format_html('<a href="/admin/base/user/%s/change/">%s</a>' % (obj.owner.id, obj.owner.full_name))
    owner_change_url.short_description = 'Owner'

Tags: 对象djangofromimport视图idobjadmin
1条回答
网友
1楼 · 发布于 2024-10-01 07:10:32

您可以创建一个链接到您的用户的只读字段。{cd1}你的班级:

from django.utils.safestring import mark_safe

class CarAdmin(admin.ModelAdmin):

    readonly_fields = ('user_link', )

    @mark_safe
    def user_link(self, car):
        url = reverse('admin:user_user_change', args=(car.owner.id, ))
        return '<a href="{url}">{user}</a>'.format(
             url=url, 
             user=car.owner.fullname
        )

    user_link.short_description = "Edit car owner"

相关问题 更多 >