gpt4 book ai didi

django - Admin 中 Django 的外键引用

转载 作者:行者123 更新时间:2023-12-04 02:39:12 29 4
gpt4 key购买 nike

我一直在尝试在 Django admin 中解决这个问题,但仍然找不到文档。

在我的 模型.py ,我有以下代码:

from django.db import models

class Post(models.Model):
title = models.CharField(max_length=200)
author = models.ForeignKey('Author', blank=False)

class Author(models.Model):
first_name = models.CharField('First Name',max_length=50)
last_name = models.CharField('Last Name', max_length=50, blank=True)
description = models.CharField(max_length=500, blank=True)

def __str__(self):
return (self.first_name + ' ' + self.last_name)

并在 admin.py
从 django.contrib 导入管理员
# Register your models here.
from .models import Author, Post

class PostAdmin(admin.ModelAdmin):
list_display = ['title', 'author', 'get_author_description']

admin.site.register(Post, PostAdmin)

但是,每次运行服务器时,我都会收到错误消息
<class 'blog.admin.PostAdmin'>: (admin.E108) The value of         
'list_display[2]' refers to 'get_author_description', which is not a
callable, an attribute of 'PostAdmin', or an attribute or method on
'blog.Post'.

我已经阅读了很多关于此的文档,但仍然无济于事。有接类人吗?

最终编辑
我决定保留这个问题的初始帖子。最终的解决方案只涉及 PostAdmin的变化.
class PostAdmin(admin.ModelAdmin):
list_display = ['title', 'author', 'author_description',]

def author_description(self, obj):
return obj.author.description
author_description.short_description = 'The Author Description'

需要注意的关键事项是:
  • 方法author_description需要与类的缩进相同。此外,它需要返回 obj.author.description正如我们所指的作者对象。 get_author_description根本不需要(你可以说这是一种分心)。
  • 最佳答案

    您可以在 admin 类中使用自定义方法:

    class PostAdmin(admin.ModelAdmin):

    list_display = ['title', 'author', 'author_description']

    def author_description(self, obj):
    return obj.author.get_author_description()

    此外,您可以在自定义方法中自定义字段或属性的格式。如果该方法将返回 HTML,您可以在该方法之后的类中添加以下内容:
    author_description.allow_tags = True

    最后,如果您想为此方法添加自定义详细名称:
    author_description.short_description = "My awesome name"

    关于django - Admin 中 Django 的外键引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32883057/

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