Django: как определить отношение один к одному в таблице в админке? - PullRequest
0 голосов
/ 07 января 2020

Добрый день, друзья!

Я пытаюсь определить индивидуальное отношение к пользователю в django admin. Ниже мой код в models.py в приложении:

from django.db import models

class Tutor(models.Model):
    account = models.OneToOneField([A User from Admin]) # what should I code here?
    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)

Что я должен написать вместо [A User from Admin]?

Спасибо.

Ответы [ 2 ]

1 голос
/ 07 января 2020

Пользовательская модель принадлежит django.contrib.auth

from django.contrib.auth.models import User
from django.db import models

class Tutor(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)

Редактировать

Как указано в комментариях, лучше ссылаться на модель через настройку AUTH_USER_MODEL , Таким образом, код не нарушается, если вы измените модель пользователя. Django Документы - Ссылка на модель пользователя

from django.conf import settings
from django.db import models

class Tutor(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)
0 голосов
/ 07 января 2020
from django.db import models
from django.contrib.auth.models import User
#You need to add the aforementioned line if you want to load User model here

class Tutor(models.Model):
    account = models.OneToOneField(User, on_delete=models.CASCADE)
    first_name = models.CharField(max_length=200)
    last_name = models.CharField(max_length=200)

Теперь, если вы хотите получить доступ к нему по информации пользователя, тогда вы можете. Скажем, вам нужно получить доступ к имени пользователя. Затем вы просто запустите запрос взаимосвязи здесь:

user_info = User.objects.get(username='someone')
first_name = user_info.tutor.first_name

Дополнительная информация: Если вам нужно добавить имя пользователя и фамилию для пользователя, вам не нужно добавлять другую таблицу. Просто расширяет UserCreationForm и добавляет дополнительное поле для пользовательской модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...