【问题标题】:Manipulating Data in Django's Admin Panel on Save在保存时在 Django 的管理面板中操作数据
【发布时间】:2010-10-19 17:11:38
【问题描述】:

好的,下面是瘦的:

# models.py
class Article( models.Model ):
    title           = models.CharField( max_length = 255 )
    author          = models.ForeignKey( User )
    published_at    = models.DateTimeField( auto_now_add = True )
    body            = models.TextField( )

    def __unicode__( self ):
        return self.title

# admin.py
from hpccoe.news.models import Article
from django.contrib import admin
from django import forms
from django.forms import widgets

class ArticleAdminForm( forms.ModelForm ):    
    title   = forms.CharField( max_length = 255, required = True )
    body    = forms.CharField( required = True, widget = widgets.Textarea )

class ArticleAdmin( admin.ModelAdmin ):
    fields  = [ 'title', 'body' ]
    form    = ArticleAdminForm

admin.site.register( Article, ArticleAdmin )

如您所见,我在管理员表单中省略了作者字段。我想以某种方式在保存之前自动填充它。我该如何做到这一点?过去一小时我一直在 Google 上无济于事。

提前致谢。

【问题讨论】:

    标签: django django-admin foreign-keys save


    【解决方案1】:

    来自Django Docs

    ModelAdmin.save_model(self, request, obj, form, change)
    

    save_model 方法被赋予了HttpRequest、一个模型实例、一个ModelForm 实例和一个基于它是添加还是更改对象的布尔值。在这里您可以进行任何保存前或保存后的操作。

    例如在保存之前将request.user附加到对象:

    from django.contrib import admin
    
    class ArticleAdmin(admin.ModelAdmin):
        def save_model(self, request, obj, form, change):
            obj.user = request.user
            super().save_model(request, obj, form, change)
    

    【讨论】:

      【解决方案2】:
      class ArticleAdmin( admin.ModelAdmin ):
          fields  = [ 'title', 'body' ]
          form    = ArticleAdminForm
      
          def save_model(self, request, obj, form, change):
               obj.author = "name Here"
               obj.save()
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-10
        • 2021-10-12
        • 1970-01-01
        相关资源
        最近更新 更多