首页 > 解决方案 > 如何在 django 中保存时将模型与当前用户关联

问题描述

我是 django 的新手,很抱歉这个简单的问题。我正在使用 django 构建网络应用程序。我想在他/她自动创建任何新对象时保存当前登录的用户。我想在自定义管理面板中实现此功能。

class Post(models.Model):
   user = models.ForeginKey(...)
   .............

所以在这里我想自动填写用户字段。

标签: django

解决方案


您可以直接引用用户模型。

from django.contrib.auth.models import User
from django.db import models

class Post(models.Model):
    user = models.ForeginKey(User, on_delete=models.CASCADE)

或者您可以使用AUTH_USER_MODEL设置(推荐)

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

class Post(models.Model):
    user = models.ForeginKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

在您的通用创建视图中,您可以将与方法request.user内的对象相关联,如此处所述在基于类的通用视图中访问 request.user 以在 Django 中设置 FK 字段form_valid

class PostView(CreateView):

    def form_valid(self, form):
        obj = form.save(commit=False)
        obj.user = self.request.user
        obj.save()        
        return http.HttpResponseRedirect(self.get_success_url())

推荐阅读