User
- это особый случай в структуре Django. Вы не должны использовать наследование.
Лучше всего добавлять данные к нему, создавая модель и определяя ее как профиль пользователя :
Создайте для этого модель:
from django.db import models
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True) # ensure you create one profile only
address = models.ForeignKey(Address, blank=True, null=True)
Тогда вам необходимо объявить ее в настройках как профиль пользователя:
AUTH_PROFILE_MODULE = "your_app.UserProfile"
Тогда, на ваш взгляд:
def your_view(request):
user_profile = request.user.get_profile()
address = user_profile.address
Это стандартный способ сделать это, потому что приложения Django contrib, такие как admin или auth (с логином, разрешениями и т. Д.), Ожидают, что пользователь будет User
классом, а не подклассом, который вы создаете.
Если вы используете наследование, request.user
не будет объектом, который вы создали, и вы не сможете получить доступ к его данным.
Если вы хотите редактировать все данные, касающиесяпользователь на той же странице, то есть способ сделать это :