django - 如何在 django 中保存时将模型与当前用户关联
问题描述
我是 django 的新手,很抱歉这个简单的问题。我正在使用 django 构建网络应用程序。我想在他/她自动创建任何新对象时保存当前登录的用户。我想在自定义管理面板中实现此功能。
class Post(models.Model):
user = models.ForeginKey(...)
.............
所以在这里我想自动填写用户字段。
解决方案
您可以直接引用用户模型。
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())
推荐阅读
- javascript - 如何在光滑的滑块后更改回调上触发 createjs 动画?
- python - 如何在 django python 的 url 中传递可选参数
- vb.net - 从 settings.ini 文件自动加载 TabControl
- xml - 在 xslt 中循环并连接一个数组
- c++ - 使用 Catch2 以全精度打印浮点值
- excel - 过滤数据后复制第二行直到最后一行,列中有空格
- excel - 如何按时间顺序对 Excel 数据透视表进行排序
- react-native - 如何在从 API 获取的地图上呈现标记?
- javascript - 在正则表达式反向引用中标记的八进制文字
- android - Android Retrofit 从 JSON 响应中获取数据