Лучший способ добавить удобные методы для модели Django Auth User?

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

22
задан Soviut 30 November 2009 в 06:52
поделиться

3 ответа

Это зависит от того, что вы пытаетесь добавить в модель. Если вы хотите добавить дополнительную информацию о пользователе, обычно рекомендуется использовать метод UserProfile : http://docs.djangoproject.com/en/dev/topics/auth/ #storing-additional-information-about-users

Однако, если вы просто хотите добавить собственные методы или менеджеры в модель User , я бы сказал, что более логично использовать модель прокси, например Итак:

from django.contrib.auth.models import User

class UserMethods(User):
  def custom_method(self):
    pass
  class Meta:
    proxy=True

Прокси-модель будет работать с той же таблицей базы данных, что и исходная модель, поэтому идеально подходит для создания пользовательских методов без физического расширения модели. Просто замените любые ссылки на пользователя в ваших представлениях на UserMethods . (И, конечно же, вы можете использовать это в инструменте администратора, отменив регистрацию модели User и зарегистрировав вместо нее свою модель прокси.)

Любые экземпляры исходной модели User , которые созданы будут мгновенно доступны через модель UserMethods , и наоборот. Подробнее здесь: http://docs.djangoproject.com/en/dev/topics/db/models/#proxy-models

(NB. Для моделей прокси требуется Django 1.1 и выше)

30
ответ дан 29 November 2019 в 04:15
поделиться

Да. Не нужно возиться с основами, если к вашей пользовательской модели прикреплена функция .get_profile ().

4
ответ дан 29 November 2019 в 04:15
поделиться

Я предпочитаю использовать один и тот же UserProfile в различных проектах, которые я разрабатываю, и расширяю User для любых нужд конкретного проекта. Таким образом, общие функции передаются в UserProfile, а функции для конкретного проекта - в пользовательские User. У меня еще не было никаких побочных эффектов от наличия подкласса модели User, интересно, есть ли еще какие-то с Django 1.0 +.

-1
ответ дан 29 November 2019 в 04:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: