foreignkey (user) in models

77,038

Solution 1

I do not know the "settings.AUTH_USER_MODEL" approach but a well-known approach and commonly used is the "Auth.User" model. Something like this on your end.

from django.contrib.auth.models import User

class BlogPost(models.Model):
    '''a model for a blog post'''

    author = models.ForeignKey(User)
    date = models.DateField()
    title = models.CharField(max_length=100)
    post = models.TextField()

Solution 2

Don't use the User model directly.

From the documentation

Instead of referring to User directly, you should reference the user model using django.contrib.auth.get_user_model()

When you define a foreign key or many-to-many relations to the user model, you should specify the custom model using the AUTH_USER_MODEL setting.

Example:

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

class Article(models.Model):
    author = models.ForeignKey(
        settings.AUTH_USER_MODEL,
        on_delete=models.CASCADE,
    )

Solution 3

If you created a custom User model, you would use setting.AUTH_USER_MODEL, if not you can go ahead an use User model

Referencing Django User model

Share:
77,038
Joff
Author by

Joff

My name is Jeff. I started learning HTML and CSS in the mid 90's as a kid, and just kept learning more and more...

Updated on June 30, 2021

Comments

  • Joff
    Joff almost 3 years

    I read the docs and this post... Django - Foreign Key to User model

    I followed what it said and I still cannot get it to work. When I try to run the migrations I get this error in the traceback...

    django.db.utils.ProgrammingError: column "author_id" cannot be cast automatically to type integer
    HINT:  You might need to specify "USING author_id::integer".
    

    I just don't know how to go about fixing that error.

    from django.db import models
    from django.contrib.auth.models import User
    
    # Create your models here.
    class BlogCategory(models.Model):
        '''model for categories'''
    
        title = models.CharField(max_length=30)
        description = models.CharField(max_length=100)
    
    
    class BlogPost(models.Model):
        '''a model for a blog post'''
    
        author = models.ForeignKey(User)
        date = models.DateField()
        title = models.CharField(max_length=100)
        post = models.TextField()