Django admin 后台修改数据的时候,怎么在渲染表单之前对数据进行修改?

文章信息和内容用两张表存,使用一对一的关联在一块儿的,有个需求,在后台修改信息的时候想要对内容进行一些修改

即:在修改信息时,将数据渲染到表单之前对数据进行一些修改

这个字段还是 inlines 模型的字段

阅读 2.8k
1 个回答

用get_form方法:

from django.contrib import admin
from .models import Article, ArticleContent  # 模型

class ArticleContentInline(admin.StackedInline):
    model = ArticleContent
    # 其他设置...

class ArticleAdmin(admin.ModelAdmin):

    inlines = [
        ArticleContentInline,
    ]

    def get_form(self, request, obj=None, **kwargs):
        form = super().get_form(request, obj=obj, **kwargs)
        
        if obj:
            article_content = obj.articlecontent  # 假设一对一关联的related_name是'articlecontent'

            # 数据修改
            article_content.content = article_content.content.upper() 
            article_content.save()

        return form

admin.site.register(Article, ArticleAdmin)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题