Django:在保存之前更改 TextField

Posted

技术标签:

【中文标题】Django:在保存之前更改 TextField【英文标题】:Django: change TextField before save 【发布时间】:2022-01-23 18:43:16 【问题描述】:

这是我的模型:

class Card(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    imp_id = models.TextField(null = True)

这是我的观点:

def Add(request):
if request.method == 'POST':
    form = Add_card(request.POST)

    if form.is_valid():
        save = form.save(commit = False)
        save.user = request.user
        save.imp_id = "asd" # I tried to change it here but I failed
        save.save()
else:
    form = Add_card()

cards = Card.objects.all()
return render(request, 'addcard.html', 'form': form, 'cards' : cards)

如何在保存之前更改该文本字段?

【问题讨论】:

你能显示forms.py Add_card() 类吗? 【参考方案1】:

这个问题可以通过default='asd'来解决。

【讨论】:

我会将“asd”替换为我创建的随机 id。所以这不是我要找的答案。反正我解决了。感谢您的评论。【参考方案2】:

你可以这样做

def Add(request):
    if request.method == 'POST':
        request.POST.imp_id="asd"
        form = Add_card(request.POST)

        if form.is_valid():
            save = form.save(commit = False)
            save.user = request.user
            save.save()
    else:
        form = Add_card()

    cards = Card.objects.all()
    return render(request, 'addcard.html', 'form': form, 'cards' : cards)

【讨论】:

以上是关于Django:在保存之前更改 TextField的主要内容,如果未能解决你的问题,请参考以下文章

django - 在保存之前比较新旧字段值

python django检查模型在保存时更改

如何将 Django 应用程序设置保存在数据库中,或即时更改?

在 django admin 上编辑实际对象之前保存相关对象

在用户注册之前保存 django 模型表单数据

使用 model.FileField 在 Django 中保存之前修改文件名