首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django管理操作更新外键

Django管理操作更新外键
EN

Stack Overflow用户
提问于 2014-08-14 21:51:32
回答 2查看 1.4K关注 0票数 0

我在我的admin.py文件中添加了这个简单的操作。

代码语言:javascript
运行
复制
def groupA(modeladmin, request, queryset):
    queryset.update(group=1)
groupA.short_description = "Group A"

//
class StudentAdmin(admin.ModelAdmin):
...
actions = [groupA]

到目前为止,一切都如期而至。

问题是,这个组是一个外键,如果我可以这样做,它会更容易管理。

代码语言:javascript
运行
复制
def groupA(modeladmin, request, queryset):
    queryset.update(group="A")
groupA.short_description = "Group A"

我试过下面的查询,但没有运气。

代码语言:javascript
运行
复制
     queryset.update(group__name="A")

我的小组模型看起来就像这样:

代码语言:javascript
运行
复制
class Group(models.Model):
    name = models.CharField(max_length=5, default='', blank=True)
    ....

    def __str__(self):
        return self.name

那么,是否可以使用我的组模型的str表示来执行管理操作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-14 22:08:53

你为什么不导入组模型,得到组A并像这样进行更新呢?

代码语言:javascript
运行
复制
def groupA(modeladmin, request, queryset):
    from models import Group
    g = Group.objects.get(name="Group A")
    queryset.update(group=g)
票数 1
EN

Stack Overflow用户

发布于 2021-03-07 23:54:51

我也遇到了同样的问题,并注意到@metraon实际上找到了一个很好的片段,但它只出现在评论中。这个片段对我来说很有魅力,尽管它已经过去7年了,所以我想把它作为答案发布来让它更容易找到。

下面是metraon在https://djangosnippets.org/snippets/1836/找到的片段:

代码语言:javascript
运行
复制
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())
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25318139

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档