在Django的管理面板中操作数据保存 [英] Manipulating Data in Django's Admin Panel on Save

查看:120
本文介绍了在Django的管理面板中操作数据保存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

好的,所以这里是瘦的:

Ok, so here's the skinny:

# 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上一直没有用。

As you can see, I'm omitting the author field in the Admin form. I want to, somehow, auto-fill this before it's saved. How do I make that happen? I've been on Google for the last hour to no avail.

提前感谢

推荐答案

Django Docs

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




save_model 方法是给出了 HttpRequest ,一个模型实例,一个 ModelForm 实例和一个基于是否添加或更改的布尔值目的。在这里,您可以进行任何保存前或保存后的操作。

The save_model method is given the HttpRequest, a model instance, a ModelForm instance and a boolean value based on whether it is adding or changing the object. Here you can do any pre- or post-save operations.

例如,将 request.user 附加到保存前的对象:

For example to attach request.user to the object prior to saving:



class ArticleAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        obj.user = request.user
        obj.save()

这篇关于在Django的管理面板中操作数据保存的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆