在保存时在 Django 的管理面板中操作数据 [英] Manipulating Data in Django's Admin Panel on Save
问题描述
好的,下面是瘦的:
#models.py类文章(models.Model):标题 = models.CharField(max_length = 255)作者 = 模型.ForeignKey( 用户 )published_at = models.DateTimeField( auto_now_add = True )正文 = 模型.TextField()def __unicode__( 自我 ):返回self.title# 管理员.py从 hpccoe.news.models 导入文章从 django.contrib 导入管理员从 django 导入表格从 django.forms 导入小部件类 ArticleAdminForm(forms.ModelForm):标题 = forms.CharField(max_length = 255, required = True)正文 = forms.CharField(必需 = True,小部件 = widgets.Textarea)类 ArticleAdmin( admin.ModelAdmin ):字段= ['标题','正文']表格 = ArticleAdminFormadmin.site.register( 文章, ArticleAdmin )
如您所见,我在管理员表单中省略了作者字段.我想以某种方式在保存之前自动填充它.我该如何做到这一点?过去一小时我一直在使用 Google,但无济于事.
提前致谢.
来自 Django 文档:
ModelAdmin.save_model(self, request, obj, form, change)
<块引用>
save_model
方法被赋予 HttpRequest
、一个模型实例、一个 ModelForm
实例和一个基于它是添加还是添加的布尔值改变对象.在这里您可以进行任何保存前或保存后的操作.
例如在保存之前将 request.user
附加到对象:
来自 django.contrib 导入管理类 ArticleAdmin(admin.ModelAdmin):def save_model(self, request, obj, form, change):obj.user = request.usersuper().save_model(request, obj, form, change)
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 )
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.
Thanks in advance.
From the Django Docs:
ModelAdmin.save_model(self, request, obj, form, change)
The
save_model
method is given theHttpRequest
, a model instance, aModelForm
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.For example to attach
request.user
to the object prior to saving:
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)
这篇关于在保存时在 Django 的管理面板中操作数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!