2015-03-31 84 views
0

我爲我的用戶使用Django用戶模型。我需要的是在用戶管理中添加一項操作,以便我可以向我將要選擇的用戶發送短信。 這是它是如何工作的:向用戶管理添加Django動作

  • 我登錄到Django管理
  • 選擇用戶模型
  • 從用戶的列表中選擇一個用戶,然後選擇我創建的「Send 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') 

,但我無法加入到行動用戶模型(引發了一個「模型已經註冊的錯誤」,我通過註銷解決了這個問題,但是用戶模型中的密碼是可見的,這就是爲什麼我創建了UserProfile模型)

那麼,我可以將操作添加到用戶模型中,而不必弄亂它將如何在管理員上顯示內容? 我可以將動作重定向到文本形式(或其他模板)嗎? 或者這是一個不好的方法來考慮它...我使用this API發送我的文本。你可以提供什麼方向?

回答

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

如果你只是想添加一個按鈕到另一個頁面發送一條消息,我會修改列表模板添加該按鈕。

+0

謝謝@Thom Wiggers。這真的有幫助。我將User模型擴展爲一個新的UserProfile模型,然後在User模型中內聯新模型。爲我工作。然後我圍繞一箇中間頁面發送消息。謝謝 – 2015-04-01 21:26:22