Django - 仅当 qs len 大于 5 时才将类添加到内联
对于 TaskInline
,如果有超过 5 个元素,我想将其显示为折叠状态:
from django.contrib import admin
from django.contrib.auth.models import User
from django.db import models
class Task(models.Model):
title = models.CharField(max_length=50)
description = models.TextField()
performer = models.ForeignKey(User, on_delete=models.CASCADE)
class TaskInline(admin.TabularInline):
model = Task
def get_queryset(self, request):
qs = super().get_queryset(request)
if len(qs) > 5:
self.classes = 'collapse',
return qs
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
inlines = TaskInline,
但是在 get_queryset
方法中实现的技巧似乎不起作用(似乎此方法选择了所有元素) Task
模型的项目)。
我应该在哪里比较 len 来添加类
?
For TaskInline
I'd like to display it collapsed if there are more than 5 elements:
from django.contrib import admin
from django.contrib.auth.models import User
from django.db import models
class Task(models.Model):
title = models.CharField(max_length=50)
description = models.TextField()
performer = models.ForeignKey(User, on_delete=models.CASCADE)
class TaskInline(admin.TabularInline):
model = Task
def get_queryset(self, request):
qs = super().get_queryset(request)
if len(qs) > 5:
self.classes = 'collapse',
return qs
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
inlines = TaskInline,
But trick that is implemented in get_queryset
method seems not working (it seems this method selects all the items of Task
model).
Where should I compare len to add classes
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
没有“正确的”方法可以做到这一点,但是...为了实现您想要的效果,您可以选择任何接受 obj 参数的方法。例如
has_view_permission
或get_forms
或get_formset
或get_extra
...请注意,您不会收到
QuerySet相关管理器的
,但会获取非内联管理器中请求的obj
。例子:
There's no "proper" way to do so, but... To achieve what you want you can pick any method that accepts
obj
argument. Likehas_view_permission
orget_forms
orget_formset
orget_extra
...Note that you will not receive a
QuerySet
of the related manager, but instead will get theobj
that is requested in the non-inline admin.Example: