Я использовать этот учебник и делать именно то, что они делают: https://docs.djangoproject.com/ja/1.9/topics/auth/customizing/#extending-the-existing-user-modelDjango модель расширения пользователь учебник не работает для меня
мой model.py:
from django.db import models
from django.contrib.auth.models import User
from datetime import datetime
class Chess(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
last_activity = models.DateTimeField(default=datetime(1970,1,1,))
is_avaliable = models.BooleanField(default=False,)
in_progress = models.BooleanField(default=False,)
мой admin.py:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User
from chess_tournament.models import Chess
class ChessInline(admin.StackedInline):
model = Chess
can_delete = False
verbose_name_plural = 'Chess'
# Define a new User admin
class UserAdmin(BaseUserAdmin):
inlines = (ChessInline,)
# Re-register UserAdmin
admin.site.unregister(User)
admin.site.register(User, UserAdmin)
в managaer.py оболочки:
from django.contrib.auth.models import User
u = User.objects.get(pk=1)
u.username # return 'admin' it's work
u.chess.last_activity # return ERROR (described below)
AttrinbuteError: «Пользователь» объект не имеет атрибута «шахматы»
- но в Джанго панели администратора этого поля доступны и работает
Пожалуйста, помогите понять это сог я уже провел 4 часа это ...
Это не поможет. Отношения уже имеют имя по умолчанию; в случае OneToOneField это младшее имя модели. 'u.chess' будет работать. –
@ DanielRoseman 'u.chess' не будет работать в этом случае. Он дает объект AttributeError: 'User' не имеет атрибута 'chess''. – Aakash
В описании вопроса четко написано, что 'u.chess' не работает. @ DanielRoseman, по крайней мере, попробуйте решение перед голосованием. – Aakash