Я работаю над созданием веб-сайта с профилями пользователей, но у меня возникла проблема. Я очень смущен тем, как работает User
в Django. Вот мой текущий код: В Models.py
Django User and AbstractBaseUser
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User)
username = models.CharField(max_length=20)
first_name = models.CharField(max_length=20)
last_name = models.CharField(max_length=20)
biography = models.TextField(max_length=1000)
votes = models.IntegerField(blank=True, null=True)
timestamp = models.DateTimeField(auto_now_add=True,
auto_now=False, null=True
)
def __unicode__(self):
return unicode(self.user.username)
class Post(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL)
title = models.CharField(max_length=100, blank=False)
body = models.TextField(blank=False)
description = models.CharField(max_length=100, blank=True)
date = models.DateTimeField(auto_now_add=True, auto_now=False)
keywords = models.CharField(max_length=100, blank=True)
votes = models.IntegerField(blank=True, null=True)
def __unicode__(self):
return unicode(self.title)
В моей settings.py
у меня есть AUTH_USER_MODEL = 'models.Profile'
набор.
Теперь, когда я захожу на сайт Admin
и создаю новый Profile
, у него есть поле User
, где я должен выбрать пользователя. User
, который я должен выбрать, это мой суперпользователь Django Admin, который я создал с помощью python manage.py createsuperuser
. Чтобы создать новый User
целиком и не привязываться к суперпользователю Django Admin, должен ли я делать пользовательский User
вместо AbstractBaseUser
? Я следил за некоторыми учебниками, и они, похоже, используют метод auth.User
. Я здесь что-то не так?
Спасибо за информацию! Кажется, он работает так, как мне нужно. Теперь на странице администратора отображается имя пользователя каждого объекта «Профиль», а не имя суперпользователя. Когда я создаю нового пользователя, создавая объект «Профиль» через мои представления, они не отображают «Пользователь», выбранный на их странице администратора. Вместо этого он пуст, но я все еще могу выбрать «Пользователь» из раскрывающегося списка. Это мне не кажется правильным. – tear728
@ tear728, если вы создаете новый профиль пользователя, ясно, что новый профиль еще не имеет отношения к пользовательской модели, а значит и пустое раскрывающееся меню. – doniyor
Да, я просто подумал об этом, когда я пошел, и попытался добавить новый профиль к пользователю с профилем, уже назначенным ему, и это не позволило мне. еще раз спасибо – tear728