Size: a a a

Django [ru] #STAY HOME

2020 February 14

T

Tim in Django [ru] #STAY HOME
не будет работать
источник

FK

Farid Khalikov in Django [ru] #STAY HOME
Я у себя использую, работает.
источник

T

Tim in Django [ru] #STAY HOME
Farid Khalikov
Я у себя использую, работает.
Я проверил.
источник

FK

Farid Khalikov in Django [ru] #STAY HOME
А какая версия джанги?
источник

FK

Farid Khalikov in Django [ru] #STAY HOME
Вот к примеру у меня профиль пользователя из учебного проекта:
class Profile(models.Model):
   user = models.OneToOneField(User, related_name='profile', on_delete=models.CASCADE,
                               verbose_name='Пользователь')
   birth_date = models.DateField(null=True, blank=True, verbose_name='Дата рождения')
   avatar = models.ImageField(null=True, blank=True,
                              upload_to='user_pics', verbose_name='Аватар')
   site = models.URLField(max_length=255, null=True, blank=True, verbose_name='Сайт')

   def __str__(self):
       return self.user.get_full_name() + "'s Profile"

   class Meta:
       verbose_name = 'Профиль'
       verbose_name_plural = 'Профили'
источник

FK

Farid Khalikov in Django [ru] #STAY HOME
И, соответственно, админка:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

from .models import Profile


class ProfileInline(admin.StackedInline):
   model = Profile
   fields = ['birth_date', 'avatar']


class UserProfileAdmin(UserAdmin):
   inlines = [ProfileInline]


admin.site.unregister(User)
admin.site.register(User, UserProfileAdmin)
источник

T

Tim in Django [ru] #STAY HOME
Farid Khalikov
А какая версия джанги?
2.2
источник

FK

Farid Khalikov in Django [ru] #STAY HOME
В админке по итогу выглядит так.
источник

FK

Farid Khalikov in Django [ru] #STAY HOME
хм, тоже 2.2
источник

T

Tim in Django [ru] #STAY HOME
Farid Khalikov
И, соответственно, админка:
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User

from .models import Profile


class ProfileInline(admin.StackedInline):
   model = Profile
   fields = ['birth_date', 'avatar']


class UserProfileAdmin(UserAdmin):
   inlines = [ProfileInline]


admin.site.unregister(User)
admin.site.register(User, UserProfileAdmin)
мне в обратную сторону нужно)
источник

T

Tim in Django [ru] #STAY HOME
чтобы юзер был в инлайне
источник

FK

Farid Khalikov in Django [ru] #STAY HOME
а, понял.
источник

FK

Farid Khalikov in Django [ru] #STAY HOME
может тогда наследовать employee от юзера? Он вроде неявно создаёт там OneToOne поле, но выводит поля юзера в employee.
источник

T

Tim in Django [ru] #STAY HOME
Farid Khalikov
может тогда наследовать employee от юзера? Он вроде неявно создаёт там OneToOne поле, но выводит поля юзера в employee.
Хм, не знаю.
А система аутентификации также будет работать?
Employee тоже должны иметь доступ к админке
источник

FK

Farid Khalikov in Django [ru] #STAY HOME
Tim
Хм, не знаю.
А система аутентификации также будет работать?
Employee тоже должны иметь доступ к админке
также будет. По сути при создании employee он будет заводить и юзера и employee. Только нужно учесть момент с id-шниками, чтобы они совпадали - для удобства. В проекте, где сейчас работаю сделано так, что этот OneToOne определён явно и одновременно сделан первичным ключом.
источник

T

Tim in Django [ru] #STAY HOME
Это какой тип наследования получается?
источник

FK

Farid Khalikov in Django [ru] #STAY HOME
это получается, что Employee (аналогичная модель) наследуется прямо от общего User, и там же ещё OneToOne поле.
источник

T

Tim in Django [ru] #STAY HOME
Farid Khalikov
это получается, что Employee (аналогичная модель) наследуется прямо от общего User, и там же ещё OneToOne поле.
а, сложна, страшна 🙂
первый раз такое слышу)

есть тут подводные камни?
источник

FK

Farid Khalikov in Django [ru] #STAY HOME
источник

FK

Farid Khalikov in Django [ru] #STAY HOME
Tim
а, сложна, страшна 🙂
первый раз такое слышу)

есть тут подводные камни?
хрен его, я сам первый раз с этим работаю ) Пока наткнулся на то, что если так делать, то нельзя в OneToOne прописывать default, иначе он будет по умолчанию вязать новых Employee к этому самому дефолтному пользователю и переписывать его данные при сохранении.
источник