我在admin.py文件中添加了这个简单的操作。
def groupA(modeladmin, request, queryset):
queryset.update(group=1)
groupA.short_description = "Group A"
//
class StudentAdmin(admin.ModelAdmin):
...
actions = [groupA]
到目前为止,一切都按预期进行。
问题是该组是一个外键,如果我可以做类似
的事情,它会更易于管理def groupA(modeladmin, request, queryset):
queryset.update(group="A")
groupA.short_description = "Group A"
我尝试使用下面的查询集,但没有运气。
queryset.update(group__name="A")
我的群组模型看起来像这样:
class Group(models.Model):
name = models.CharField(max_length=5, default='', blank=True)
....
def __str__(self):
return self.name
那么可以使用我的群组模型的 str 表示来执行管理操作吗?
答案 0 :(得分:1)
为什么不导入群组模型,获取群组A并更新所有内容?
def groupA(modeladmin, request, queryset):
from models import Group
g = Group.objects.get(name="Group A")
queryset.update(group=g)
答案 1 :(得分:1)
我遇到了同样的问题,并注意到@metraon 实际上找到了一个不错的片段,但它仅在评论中。这段代码对我来说就像一个魅力,尽管现在已经过去了 7 年,所以我想通过将其发布为答案来使其更容易找到。
这是 metraon 在 https://djangosnippets.org/snippets/1836/ 找到的片段:
def create_action(quality):
def action(modeladmin, request, queryset): queryset.update(quality=quality)
name = "mark_%s" % (quality,)
return (name, (action, name, "Mark selected as %s quality" % (quality,)))
class PackageAdmin(admin.ModelAdmin):
list_display = ('name', 'quality')
def get_actions(self, request):
return dict(create_action(q) for q in models.Quality.objects.all())