管理者がユーザアカウントを作成した後、メールを送信しようとしています。djangoからユーザのメールにアカウントの詳細を送信します。
アカウント/ admin.py
class ProfileInline(admin.StackedInline):
model = Profile
can_delete = False
verbose_name_plural = 'Profile'
fk_name = 'user'
class CustomUserAdmin(UserAdmin):
inlines = (ProfileInline,)
list_select_related = ('profile',)
list_display = ('email', 'username', 'first_name', 'last_name', 'is_staff')
fieldsets = (
('Personal information', {'fields': ('first_name', 'last_name', 'username', 'email', 'password')}),
('Permissions', {'fields': ('is_active', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}),
('Important dates', {'fields': ('last_login', 'date_joined')}),
)
add_fieldsets = (
('None', {
'classes': ('wide',),
'fields': ('username', 'email', 'password1', 'password2')}
),
)
def get_inline_instances(self, request, obj=None):
if not obj:
return list()
return super(CustomUserAdmin, self).get_inline_instances(request, obj)
def get_ordering(self, request):
return ['-date_joined']
def save_model(self, request, obj, form, change):
super(CustomUserAdmin, self).save_model(request, obj, form, change)
obj.user = request.user
obj.profile.email_confirmed = True
obj.profile.save()
print(obj)
if not change:
current_site = get_current_site(request)
subject = 'Your Account Login Details'
message = render_to_string('accounts/email/account_detail_email.html', {
'user': obj.user,
'domain': current_site.domain,
})
obj.user.email_user(subject, message)
メールヘッダ
MIME-Version: 1.0
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Subject: Your Account Login Details
From: ****@gmail.com
To: [email protected]
Date: Wed, 23 Aug 2017 11:21:41 -0000
Message-ID: <[email protected]>
電子メールが管理者の電子メールである必要がありません管理者にユーザーの電子メールにアクセスし、電子メールから必要があります。
私はobjを印刷すると、作成されたユーザーのユーザー名が表示されます。
ご迷惑をおかけして申し訳ございません。前もって感謝します。
もう一度素晴らしいアイデアをくれてくれてありがとう。この時点で 'adminアクション 'を持つ必要はありませんが、必要に応じて将来使用できます。 –