将Django操作添加到用户管理员

时间:2015-03-31 07:53:45

标签: python django

我正在为我的用户使用Django User模型。我需要的是在用户管理员上添加一个动作,使我能够向我选择的用户发送短信。 这就是它应该如何运作:

  • 我登录Django admin
  • 选择用户模型
  • 从用户列表中选择一个用户,然后选择"发送消息"我创造的行动。
  • 我应该被重定向到另一个具有所选用户名的页面,以及来自" Text Message"的字段。我创建的用于处理短信的模型。

到目前为止,我必须创建另一个模型:

class UserProfile(models.Model):
    user = models.OneToOneField(User) #extended the User model
    phone_number = models.CharField(u'Number', max_length=20)

然后是短信的表格:

class TextMessageForm(ModelForm):
    class Meta:
        model = TextMessage
        fields = ('sender', 'to', 'message')

但我在向User模型添加操作时遇到问题(引发了#34;模型已经注册的错误"我通过取消注册解决了这个问题,但是用户模型中的密码是可见的。那&# 39;为什么我创建了UserProfile模型)

那么,我是否可以向User模型添加操作,而不必弄乱它如何在管理员上显示内容? 我可以将操作重定向到文本表单(或其他模板)吗? 或者这是一个不好的方式来考虑它...我使用this API发送我的文本。你能提供什么方向?

1 个答案:

答案 0 :(得分:2)

您可以扩展UserAdmin管理页面:

# admin.py
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

# Define a new User admin
class UserAdmin(UserAdmin):
    """My User Admin"""
    # eg.
    form = MyFancyForm
    # or use my fancy template for the form
    add_form_template = 'myadmin/user/add_form.html'
    # or maybe add it to the change list
    change_list_template = 'myadmin/user/change_list.html'

# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)

https://docs.djangoproject.com/en/1.7/topics/auth/customizing/#extending-the-existing-user-model

如果您只想添加一个按钮转到另一个页面发送消息,我会修改列表模板以添加该按钮。