如何检查 Django 管理中自定义操作中字段的值?
How do I check the value of a field in a custom action in Django admin?
在 django admin 中,我想检查自定义操作中字段的值。在下面的示例中,我正在尝试执行以下操作,但这不是检索字段名称。如何从查询集中获取 'status' 的值?
if queryset.status != 'd':
完整示例如下:
from django.contrib import admin
from myapp.models import Article
def make_published(modeladmin, request, queryset):
if queryset.status != 'd':
queryset.update(status='p')
make_published.short_description = "Mark selected stories as published"
class ArticleAdmin(admin.ModelAdmin):
list_display = ['title', 'status']
ordering = ['title']
actions = [make_published]
admin.site.register(Article, ArticleAdmin)
查询集中的每个对象可能具有不同的状态,因此获取查询集的状态没有意义。
如果循环遍历查询集,您可以获得每个单独对象的状态。
for obj in queryset:
status = obj.status
您可以使用 exclude()
删除具有特定状态的对象,如下所示:
def make_published(modeladmin, request, queryset):
queryset = queryset.objects.exclude(status='d')
queryset.update(status='p')
make_published.short_description = "Mark selected stories as published"
在 django admin 中,我想检查自定义操作中字段的值。在下面的示例中,我正在尝试执行以下操作,但这不是检索字段名称。如何从查询集中获取 'status' 的值?
if queryset.status != 'd':
完整示例如下:
from django.contrib import admin
from myapp.models import Article
def make_published(modeladmin, request, queryset):
if queryset.status != 'd':
queryset.update(status='p')
make_published.short_description = "Mark selected stories as published"
class ArticleAdmin(admin.ModelAdmin):
list_display = ['title', 'status']
ordering = ['title']
actions = [make_published]
admin.site.register(Article, ArticleAdmin)
查询集中的每个对象可能具有不同的状态,因此获取查询集的状态没有意义。
如果循环遍历查询集,您可以获得每个单独对象的状态。
for obj in queryset:
status = obj.status
您可以使用 exclude()
删除具有特定状态的对象,如下所示:
def make_published(modeladmin, request, queryset):
queryset = queryset.objects.exclude(status='d')
queryset.update(status='p')
make_published.short_description = "Mark selected stories as published"