提问者:小点点

Django外键:设置。AUTH_USER_MODEL一直form.save


我读过一些文章,并尝试在模型中实现。

user = models.ForeignKey(settings.AUTH_USER_MODEL) 

但每当我尝试为用户保存表单时,它都会声明该值不能为null。我假设是因为它没有传递/接收AUTH_用户

例如:

class Degree(models.Model):

    user = models.ForeignKey(settings.AUTH_USER_MODEL)

    degreeLevel = models.CharField(max_length = 50)

     areaOfStudy = models.CharField(max_length = 50)

我觉得在创建用户时,我需要为所有使用user=models的模型创建一个信号。ForeignKey(settings.AUTH_USER_MODEL)但我一直在努力寻找从开始到结束处理此问题的资源,所以我不确定我会错在哪里。

任何帮助都会很好。。。

这个问题profiles_details.id不存在Django

非常感谢。

我曾经尝试过:

user=模型。ForeignKey(设置。AUTH_USER_MODEL,null=False,on_delete=模型。CASCADE,verbose_name=_(u"User"))但运行迁移时得到一个错误消息:

 NameError: name '_' is not defined

如果我取出详细名称并尝试迁移,则会出现以下错误:

您试图在没有默认值的情况下将不可为空的字段“user”添加到详细信息中;我们不能这样做(数据库需要一些东西来填充现有的行)。请选择一个修复:1)立即提供一个一次性默认值(将在所有现有行上设置)2)退出,让我在模型中添加一个默认值。派克

也看https://docs.djangoproject.com/en/dev/topics/auth/customizing/#referencing-用户模型

但我不知道该怎么办:

 django.contrib.auth.get_user_model().

共1个答案

匿名用户

我在你的问题中看到了一些细节:

>

 user = models.ForeignKey (..., null=True,...)

如果您想解决\uu无法识别的问题,应在文件顶部添加以下导入:

  from django.utils.translation import ugettext as _

如果要在视图中填充用户字段,可以按如下操作:

 from django.views.generic import View

 class MyView(View):
     ...

     def get(request, *args, **kwargs):

         myobject = Degree.objects.get(...) # do some query 
         myobject.user = request.user
         myobject.save()

         return ...

假设视图处理get请求并希望将当前用户分配给对象用户。

关于如何使用:django.contrib.auth.get_user_model这里有一个例子

from django.contrib.auth import get_user_model

...


def create_user(username, first_name, last_name, *args, **kwargs):

    user_class = get_user_model()
    new_user = user_class.objects.create(username=username,
        first_name=first_name, last_name=last_name)

基本上,get\u user\u model函数返回您在设置中配置的类。验证用户模型。例如,您可以从中访问其管理器(例如,对象)并查询或创建新实例。