2015-03-31 4 views
0

Я использую модель пользователя Django для своих пользователей. Мне нужно добавить действие в Администратор пользователя, который позволит мне отправить текстовое сообщение пользователям, которых я выбрал. Вот как это должно работать:Добавление действия Django для пользователя Admin

  • Я войти в Django администратора
  • Выберите модель Пользователи
  • Выберите пользователя из списка пользователей, а затем выберите «Отправить сообщение» действия я создал ,
  • Я должен быть перенаправлен на другую страницу, которая будет иметь выбранные имена пользователей, и поля из модели «Текстовое сообщение», которые я создал для обработки текстовых сообщений.

До сих пор я должен был создать еще одну модель:

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 были невменяемы. Вот почему я создал модель UserProfile)

Итак, могу ли я добавить приложение к модели User без необходимости возиться с тем, как это будет отображаться в администраторе? Могу ли я перенаправить действие в текстовую форму (или другой шаблон, если на то пошло)? Или это плохой способ подумать об этом ... Я использую 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. Работал для меня. Затем я работал над промежуточной страницей для отправки сообщений. благодаря –

Смежные вопросы