2011-01-10 2 views
0

Я видел пару способов расширения пользовательской информации пользователей и решил применить метод наследования модели.Наследование пользователя в django

, например, у меня есть:

class Parent(User): 
    contact_means = models.IntegerField() 
    is_staff = False 
    objects = userManager() 

Теперь это делается, я скачал django_registration, чтобы помочь мне с отправкой электронной почты для новых пользователей. Дело в том, что вместо того, чтобы использовать регистрационные формы для регистрации нового пользователя, я хочу вызвать функцию отправки/авитации электронной почты django_registration. Так что мой рабочий процесс:

1. add new Parent object in admin page. 
2. send email 

Моя проблема есть, Джанго регистрация создает новый регистрационный профиль вместе с новым пользователем в таблице пользователей. как мне настроить это так, чтобы я мог добавить пользовательскую запись в пользовательскую таблицу.

Я попытался создать

modelAdmin

и изменить метод save_model для запуска create_inactive_user из django_registration, однако я не знаю, как сохранить пользовательский объект созданный из django_registration в мой Родительская таблица, когда у меня есть модельное наследование, и у меня нет атрибута внешнего ключа в моей родительской модели.

+0

Да у вас есть неявное внешний ключ пользователя в Родитель, созданный наследованием модели, будет называться user_ptr –

ответ

2

Это, вероятно, что-то вроде:

p = Parent() 
p.user_ptr = user 
p.contact_means = ... 
p.save() 

(Django создает внешний ключ для вас, делая модель наследования, а также атрибут заканчиваясь в _ptr)

+0

- это _ptr встроенное ключевое слово? – goh

+2

№ ORM Django использует метапрограммирование для создания атрибутов в ваших классах Python на основе полей и отношений вашей модели. Он использует определенные соглашения (путем добавления, например, _set, _ptr к имени поля) для этих дополнительных атрибутов. –

+0

Не работает для меня, это переписало бы все данные 'user' на Null или default. – kxxoling