Django 形成动态让作者作为模型表单中的登录用户

2024-01-07

我正在尝试制作一些表单,允许用户添加一些对象、删除它们或编辑,但我一直坚持模型作者之类的内容。假设我们得到了带有场的模型镜头

author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

因为我创建了自定义用户模型来通过我想要的一些字段来扩展用户,然后我们创建 modelForm,创建视图等,最后得到表单。当我们尝试提交此表单时,它不会将表单中提交的对象添加到数据库中,因为表单没有填充字段作者作者,这意味着该字段== Null,这就是为什么它不会将其添加到数据库中。所以我的问题是如何使其动态化,例如,当昵称“thebestuser”的用户尝试添加此 modelForm 时,它将起作用并将作者标记为“thebestuser”? Ofc 我可以添加到表单字段作者,但在我看来这是最糟糕的方式,然后每个用户都可以添加对象,例如作为另一个用户,假设带有昵称“anothernick”的用户可以添加表单作为带有“的用户” thebestuser”,我认为这是不可接受的。

模型.py

from django.db import models
from django.contrib.auth.models import User
from streamers.models import Streamer
from django.conf import settings
from django.utils import timezone


class Shot(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
    title = models.CharField(max_length=70)
    url = models.CharField(max_length=100)
    streamer = models.ForeignKey(Streamer, on_delete=models.CASCADE)
    published_date = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return self.title

forms.py

from django import forms
from .models import Shot

class AddShot(forms.ModelForm):
    class Meta:
        model = Shot
        fields = [
            'title',
            'url',
            'streamer',
        ]
views.py
@login_required
def add_shot(request):
    form = AddShot(request.POST or None)
    if form.is_valid():
        form.save()
        instance = form.save(commit=False)
        instance.published_date = request.published_date
        instance.author = request.user
        instance.save()

    context = {
        'form': form
    }

    return render(request, 'shots/add_shot.html', context)

你需要按照你的观点去做。当您保存表单通行证时commit=False到您的保存方法,添加您的用户,然后保存返回的实例。

def my_view(request):
  form = AddShot(request.POST)
  instance = form.save(commit=False)
  instance.author = request.user
  instance.save()

记录在这里:https://docs.djangoproject.com/en/2.1/topics/forms/modelforms/#the-save-method https://docs.djangoproject.com/en/2.1/topics/forms/modelforms/#the-save-method

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django 形成动态让作者作为模型表单中的登录用户 的相关文章

随机推荐

  • 减少 HTML

    我的网页中有以下 HTML Forum ul li Stack li li OverFlow li ul 正如您在下面看到的 我完美地列出了项目 但是之间存在固定的差距 ul and li 元素 有什么办法可以缩小这个差距吗 即附加屏幕中
  • 广度优先搜索:找不到路径,二维数组中到边界的最短路径

    我尝试编写一个 绕点 游戏 基本的游戏理念是 你必须在蓝点逃脱之前包围它 每放置一个障碍物 橙色点 蓝色点 玩家 就会向边界移动一步 如果你在他到达边界之前没有圈出蓝点 那么你就输了 游戏将重新开始 因此我必须做一个对 UIButton 的
  • 重命名二维数组每行中的键

    在如下所示的数组中 如何将 fee id 重命名为 id 输入数组 fee id gt 15 fee amount gt 308 5 year gt 2009 fee id gt 14 fee amount gt 308 5 year gt
  • 通过 Spring 在并行流中使用 JPA 对象

    我正在使用 JPA 开发 spring boot 应用程序 在代码中 我发现一个非常可疑的部分 它执行类似的操作 简化的示例 代码否则包含很多混乱 entityRepository findAll parallel The findAll
  • 从数组中删除 stdClass 对象

    我有一个如下所示的数组 数组 1 我需要从中删除 stdClass 如下面的数组所示 2 目前我正在使用 foreach 循环来执行此操作 是否有更好的方法可以在不循环的情况下执行此操作 阵列1号 array 3 0 gt object s
  • 语法“while IFS= read line”记录在哪里?

    为什么我看到的每个例子都有while IFS read line并不是while IFS read line 我以为name value command可能会设置一个局部变量 但是sentence hello echo sentence不起
  • 嗅探并显示 UTF-8 格式的 TCP 数据包

    我正在尝试使用 tcpdump 来显示在我的网络上流动的 tcp 数据包的内容 我有类似的东西 tcpdump i wlan0 l A A 选项将内容显示为 ASCII 文本 但我的文本似乎是 UTF 8 有没有办法使用 tcpdump 正
  • 有没有更简单的方法在Matlab中构造Mandelbrot集?

    下面显示的代码用于绘制曼德尔布罗特集 http en wikipedia org wiki Mandelbrot set 我认为我的代码对于构造有点冗余Matrix M In Python我知道有一种干净的方法可以做到这一点 M mande
  • 日期时间向上和向下舍入

    我一直在寻找合适的舍入机制 但我发现似乎没有什么正是我所需要的 我需要分别向上舍入和向下舍入 并且还需要在已经四舍五入的情况下考虑情况 我需要进行以下舍入 5 00 gt RoundDown gt 5 00 5 04 gt RoundDow
  • 使用 powerlaw 包对截止分布进行幂律拟合

    我目前正在尝试找到一种方法来计算 MLE 截止分布的幂律拟合 分布如下 正如您所看到的 我能够分别拟合整个分布 幂律拟合 和下限 exp fit 我没能弄清楚的是如何拟合分布的上限 例如 8 有什么办法可以做到这一点poweRlaw包还是任
  • 如何使用 Docker API Python 客户端构建镜像?

    我刚刚启动了 Docker Api 并探索了各个部分 但是我一直坚持使用 python 客户端使用 docker api 构建图像 实际上我无法理解如何为 docker 设置各种所需的参数客户端 images build 方法 请帮帮我 提
  • R:rvest - 不是正确的 UTF-8,表明编码?

    我正在尝试 Hadley Wickham 的 新 Rvest 套餐 我过去用过它 所以我希望一切都会顺利进行 但是 我一直看到这个错误 gt TV Audio Video Marca lt read html page source 1 e
  • 在Python中高效地搜索字符串列表中的字符串列表

    我有一个字符串列表和一个字符串列表 例如 L1 cat dog apple orange green red L2 cat red 如果 L1 i 包含 L2 中的任何项目 我需要放置这些对 用于在图中创建边 就像 在我的例子中 我需要这些
  • Hadoop 中的作业和任务调度

    当我阅读延迟公平调度时 我对 Hadoop 中的术语 作业调度 和 任务调度 有点困惑在这张幻灯片中 https people csail mit edu matei talks 2010 eurosys delaysched pdf 如果
  • JavaScript 内部原理:事件循环以什么间隔运行?

    这是一个关于 JavaScript 内部结构的问题 假设我有 10 个异步任务 全部需要 x 秒才能运行 在等待响应时 脚本处于空闲状态 JavaScript 引擎在后台询问 任务队列中是否有任何内容 据我了解 这是一个循环 因此 事件循环
  • 程序员应该使用STL还是自己编写代码? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 合并表单和字段集不起作用?

    I ve a
  • 如何获得带有“下一步”、“上一步”和“完成”按钮的键盘?

    我想要一个上面有 下一步 上一步 和 完成 按钮的键盘 我在很多应用程序中都看到过这一点 尤其是需要填写表格的地方 我想实现类似于上面键盘的东西 我怎样才能得到它 你会找到答案这另一篇文章 https stackoverflow com q
  • 如何从nodejs中的phantomjs stdout读取图像来为其提供服务?

    我可能遗漏了一些细节 因为光栅化脚本独立工作得很好 但到目前为止我还没有成功地从 NodeJS 读取它的输出 这是 NodeJS 部分 var http require http var qs require querystring var
  • Django 形成动态让作者作为模型表单中的登录用户

    我正在尝试制作一些表单 允许用户添加一些对象 删除它们或编辑 但我一直坚持模型作者之类的内容 假设我们得到了带有场的模型镜头 author models ForeignKey settings AUTH USER MODEL on dele