Django отображает пользователя на модель - PullRequest
0 голосов
/ 12 мая 2018

В Django 1.9 я могу создавать пользователей через представление формы пользователя. Когда пользователь отправляет форму для создания профиля, отправка может быть просмотрена администратором в разделе «Пользователи» и регистрируется в порядке. Я хочу, чтобы пользователь мог только просматривать загруженные модели. Поэтому мне нужно отобразить их вместе, однако пользовательская модель не определена в models.py.

Я попытался связать их в models.py в моей модели с:

user = models.ForeignKey(User)

Однако выдается эта ошибка:

NameError: name 'User' is not defined

Это связано с тем, что пользователь не является моделью в моем models.py?

Запрос, который создает пользователь:

def post (self, request):
    form = self.form_class(request.POST)

    if form.is_valid():
        #creates an object from the form
        #being stored locally as of now
        user = form.save(commit=False)

        #cleaned data
        username = form.cleaned_data['username']
        password = form.cleaned_data['password']
        user.set_password(password)
        #Saved to the DB after it's shown in the correct format
        user.save()

models.py:

class Clean(models.Model):
    name = models.CharField(max_length=100, blank = False)
    #User doesn't see when creating model
    cv = models.TextField(max_length=10000, blank = True, null = True)
    cvfile = models.FileField(validators=[validate_file_extension])
    #User doesn't se when creating model
    cvscore = models.IntegerField()
    spellerrors = models.CharField(max_length=100, blank = False)

    *** user = models.ForeignKey(User) ***

Любое решение будет оценено. Я использую Python 3.6.4.

Ответы [ 2 ]

0 голосов
/ 12 мая 2018

Возможно, вам не хватает оператора import, но, тем не менее, прямая ссылка на User обычно , а не хорошая идея, так как позже вы можете изменить модель, которую используете для пользователей.

Как указано в документации , вам следует использовать настройки AUTH_USER_MODEL:

<b>from django.conf import settings</b>
from django.db import models

class SomeModel(models.Model):

    user = models.ForeignKey(<b>settings.AUTH_USER_MODEL</b>)
0 голосов
/ 12 мая 2018

Если вы хотите использовать auth.User, вы должны импортировать его из django

from django.contrib.auth.models import User

class Clean(models.Model):
    user = models.ForeignKey(User)

или используйте его как string из приложения Django auth

user = models.ForeignKey('auth.User')
...