1

I am trying to set up a basic blog with a custom auth model. I am trying to get a simple form to work but somehow I am not able to make it work. I am not sure what is causing the error. This is a fresh app and a fresh project I am working on.

I tried to reference from the docs but I am not sure what I am doing incorrect. How can i fix this error? Thanks in advance

Docs: https://docs.djangoproject.com/en/1.11/topics/auth/customizing/#changing-to-a-custom-user-model-mid-project

Similar questions: Cannot create form field for 'created_by' yet, because its related model 'users.User' has not been loaded yet

My Current Code

models.py

class User(AbstractUser):
  pass

class Post(models.Model):
   author = models.ForeignKey('settings.AUTH_USER_MODEL')
   title = models.CharField(max_length=200)
   text = models.TextField()
   created_date = models.DateTimeField(default=timezone.now)
   published_date = models.DateTimeField(blank=True, null=True)

forms.py:

from blog.models import User

class PostForm(forms.ModelForm):
image = forms.CharField(
    widget=forms.FileInput(attrs={'class': 'form-control'}),required=False)


class Meta():
    model = Post
    fields = ('author','title', 'text','image')
    widgets = {
        'title': forms.TextInput(attrs={'class': 'textinputclass'}),
         }

views.py

from blog.forms import PostForm, CommentForm

class CreatePostView(LoginRequiredMixin,CreateView):
  ...
  form_class = PostForm
  model = Post
  def form_valid(self,form):
    if self.request.POST:
        post = form.save()
        return HttpResponseRedirect('/')

settings.py:

AUTH_USER_MODEL = 'blog.User'

admin.py:

from .models import User
from django.contrib.auth.admin import UserAdmin
admin.site.register(User,UserAdmin)
smishra
  • 21
  • 1
  • 3

1 Answers1

5

You should use settings.AUTH_USER_MODEL, not the string 'settings.AUTH_USER_MODEL':

class Post(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL)
Alasdair
  • 298,606
  • 55
  • 578
  • 516