【问题标题】:Custom user model not working in foreign key自定义用户模型在外键中不起作用
【发布时间】:2015-08-05 19:26:42
【问题描述】:

我创建了一个运行良好的自定义用户模型。 问题是当从外键访问用户时,它会抛出我:

详细信息:表“auth_user”中不存在密钥 (author_id)=(51)。

我的自定义用户是 userauth,显然模型仍在寻找原始用户模型而不是自定义用户。

这是我所做的:

#settings.py
AUTH_USER_MODEL = 'userauth.UserAuth'

#models.py
from django.conf import settings
User = settings.AUTH_USER_MODEL

class Post(models.Model):
    title = models.CharField(max_length=255)
    content = models.TextField()
    author = models.ForeignKey(User, null=True,blank=True,default=None)

#admin.py
class AdminPost(admin.ModelAdmin):
   def save_model(self, request, obj, form, change):
        if getattr(obj, 'author', None) is None:
            obj.author = request.user
        obj.save()

【问题讨论】:

    标签: django foreign-keys django-custom-user


    【解决方案1】:

    我会这样做(不要费心分配变量):

    models.py:

    from django.conf import settings
    
    class Post(models.Model):
        title = models.CharField(max_length=255)
        content = models.TextField()
        # You don't need 'default=None'
        author = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, blank=True)
    

    【讨论】:

    • 是的,你是对的。 'default=None' 导致了问题。想知道为什么它会影响自定义用户模型。
    • @dev-jim 当您设置default=None 时,您将覆盖 ForeignKey 并说“使该字段等于空”。然后尝试调用该字段,您试图调用任何内容。从本质上讲,当您尝试从数据库中调用它时,您正在与没有主体进行对话。
    • 感谢您的解释!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 2016-03-13
    • 1970-01-01
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多