我如何执行查询集选择字段的动态更新?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我如何执行查询集选择字段的动态更新?相关的知识,希望对你有一定的参考价值。

我已经创建了一个带有选择字段的模型,该模型返回模型的级别:(类似..)

models.py

L_CHOICES = [
              ('1', '1styear'),
              ('2', '2ndyear'),
              ('3', '3rdyear'),
              ('4', '4thyear'),
           ]

class Student(models.Model):
    name = models.Charfield(primary_key = True, max_length = 255,)
    level = models.Charfield(max_length = 2, choices = L_CHOICES)

并且我想在django管理站点中添加一个操作,以便我可以动态地升级学生的水平。

类似:admin.py

class StudentAdmin(admin.ModelAdmin):
    actions = ['upgrade_level']

    def upgrade_level(self, request, queryset):
        queryset.update('level' = ??)

有人可以帮我吗。

答案

ModelAdmin类是管理界面中模型的表示。通常,这些文件存储在应用程序中名为admin.py的文件中。

from django.contrib import admin
from myproject.myapp.models import Student

admin.site.register(Student)

更多详细信息,请点击The Django admin site

对于操作,您可以参考this,其中提供了您要实现的目标的示例

from django.contrib import admin
from myapp.models import Article

def make_published(modeladmin, request, queryset):
    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)

以上是关于我如何执行查询集选择字段的动态更新?的主要内容,如果未能解决你的问题,请参考以下文章

访问选择查询记录集不可更新

表单 ModelChoiceField 查询集 + 额外选择字段 django 表单

如何在java中对另一个选择查询的结果集执行选择查询

如何在 Inlineformset 中动态过滤 ModelChoice 的查询集?

带有连接的记录集不可更新 - 如何正确执行 VBA

Django - UpdateView ModelForm 在查询集字段上设置初始值