わかりましたので、ここに細いです:
# 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 )
ご覧のとおり、管理者フォームの作成者フィールドは省略しています。保存する前に、どういうわけかこれを自動入力したい。どうすれば実現できますか?私はこの1時間グーグルにいて無駄に終わった。
前もって感謝します。
Django Docs から:
ModelAdmin.save_model(self, request, obj, form, change)
save_model
メソッドには、HttpRequest
、モデルインスタンス、ModelForm
インスタンス、およびオブジェクトを追加するか変更するかに基づいてブール値が与えられます。ここでは、保存前または保存後の操作を実行できます。たとえば、
request.user
保存する前にオブジェクトに:
class ArticleAdmin(admin.ModelAdmin):
def save_model(self, request, obj, form, change):
obj.user = request.user
obj.save()
class ArticleAdmin( admin.ModelAdmin ):
fields = [ 'title', 'body' ]
form = ArticleAdminForm
def save_model(self, request, obj, form, change):
obj.author = "name Here"
obj.save()