我阅读了文章,并尝试在模型中实施。
user = models.ForeignKey(settings.AUTH_USER_MODEL)
但每当我尝试为用户保存表单时,它都声明该值不能为空。我假设因为它没有通过/拿起AUTH_USER
例如:
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 does not exist Django
有关谢谢。
我试过了:
user = models.ForeignKey(settings.AUTH_USER_MODEL,null = False, on_delete = models.CASCADE,verbose_name = _(u" User")) 但是在运行以下迁移时收到错误消息:
NameError: name '_' is not defined
如果我采用详细的名称并尝试迁移我得到: 这个错误:
您正在尝试添加一个不可为空的字段' user'没有默认的细节;我们不能这样做(数据库需要一些东西来填充现有的行)。 请选择一个修复: 1)现在提供一次性默认值(将在所有现有行上设置) 2)退出,让我在models.py
中添加默认值还看着 https://docs.djangoproject.com/en/dev/topics/auth/customizing/#referencing-the-user-model
但不明白该怎么做:
django.contrib.auth.get_user_model().
答案 0 :(得分:1)
我在你的问题中看到了几个细节:
如果您希望user
字段不是必填字段,则应更改为:
user = models.ForeignKey (..., null=True,...)
如果您想解决有关_
无法识别的问题,您应该在文件顶部添加以下导入:
from django.utils.translation import ugettext as _
如果您想在视图中填充user
字段,可以按以下步骤操作:
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_user_model
函数会返回您在settings.AUTH_USER_MODEL
中配置的类。例如,您可以访问其管理员(例如objects
)并查询或创建新实例。