在django中使用管理员来掌握/详细信息

在django中使用管理员来掌握/详细信息,django,admin,master,detail,Django,Admin,Master,Detail,我在谷歌上搜索了一下文档,但什么也没找到 与此场景相关: 我得到了一个主/细节模型,定义如下: class Master(models.Model): title = models.CharField(max_length=100) def details_url(self): return '<a href="here comes the url linking to details">Details</a>' details_url.

我在谷歌上搜索了一下文档,但什么也没找到 与此场景相关:

我得到了一个主/细节模型,定义如下:

class Master(models.Model):
   title = models.CharField(max_length=100)

   def details_url(self):
       return '<a href="here comes the url linking to details">Details</a>'
   details_url.short_description = 'Link to details'
   details_url.allow_tags = True

class Detail(models.Model):
    master = models.ForeignKey(Master)
    details = models.TextField()
class Master(models.Model):
title=models.CharField(最大长度=100)
def详细信息\u url(自身):
返回“”
详细信息\u url.short\u说明='链接到详细信息'
详细信息\u url.allow\u标记=True
类详细信息(models.Model):
主控=型号。外键(主控)
details=models.TextField()
它们在admin中使用admin.py公开。我的问题是:

1) 如何在主模型中创建details\u url属性,以便 当在admin.py中公开时,用户可以单击它并查看 详细信息,仅查看与主模型实例相关的详细信息

2) 如果只能使用自定义视图进行此操作,如何获取视图 要生成一个看起来像其他管理员的页面?我知道我可以用 与管理员的模板代码相同,但是有没有更快的方法 例如,生成类似我案例中的详细信息的列表?通用的 视图/类

3) 无法将主控添加到detailsAdmin类的列表\u筛选器 可能是由于主记录的数量。还是。。。?甚至 如果可能的话,我如何从另一个页面设置过滤器,就像我 单击“更改”列表中的链接,主模型将转到详细信息 更改列表,如何将筛选设置为特定的 主模型的实例

简言之;我想要的只是将更改列表过滤为仅显示 与特定主记录相关的详细信息,并尽可能重复使用
尽可能使用管理员代码/功能库。

在Django 1.2.4之前,您可以使用GET查询在管理员中创建指向模型的筛选链接,如下所示:
http://your_site.com/admin/your_app/detail/?master__id__exact=2

但这是一个安全漏洞,得到了修复。现在,如果您尝试使用
list\u filter
属性中未指定的查找来筛选模型,您将得到一个
可疑操作
异常

尽管有解决办法。实现一个
valid\u lookups
属性,这样您就可以通过URL get query使用一些查找执行筛选,而无需在管理界面中公开这些查找

要使其工作,您需要在ModelAdmin上重写
lookup\u allowed()
方法。下面是示例代码,请查看上面提到的帖子以了解详细信息

class DetailAdmin(admin.ModelAdmin):
    valid_lookups = ()
    def lookup_allowed(self, lookup, *args, **kwargs):
        if lookup.startswith(self.valid_lookups):
            return True
         return super(DetailAdmin, self).lookup_allowed(lookup, *args, **kwargs)