gpt4 book ai didi

带有 get_or_create 的 Django 表单

转载 作者:行者123 更新时间:2023-12-03 11:38:57 24 4
gpt4 key购买 nike

我正在使用 Django ModelForms 创建一个表单。我的表格已经设置好了,而且工作正常。

form = MyForm(data=request.POST)

if form.is_valid():
form.save()

我现在想要的是让表单首先检查是否存在相同的记录。如果是,我希望它获取该对象的 id,如果不是,我希望它把它插入到数据库中,然后给我那个对象的 id。这是否可以使用类似的东西:
form.get_or_create(data=request.POST)

我知道我可以
form = MyForm(instance=object)

创建表单时,但这不起作用,因为我仍然想要没有对象实例的情况

编辑:

说我的模型是
class Book(models.Model):
name = models.CharField(max_length=50)
author = models.CharField(max_length=50)
price = models.CharField(max_length=50)

我想要一个表格,有人可以填写它来存放书籍。但是,如果数据库中已经有一本书具有相同的名称、作者和价格,我显然不希望再次添加此记录,因此只想找出它的 id 而不是添加它。

我知道 Django 中有一个函数; get_or_create 执行此操作,但表单是否有类似的内容?或者我必须做类似的事情
if form.is_valid(): 
f = form.save(commit=false)
id = get_or_create(name=f.name, author=f.author, price=f.price)

谢谢

最佳答案

我喜欢这种方法:

if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
book, created = Book.objects.get_or_create(**form.cleaned_data)

这样您就可以利用模型表单的所有功能(.save() 除外)和 get_or_create 快捷方式。

关于带有 get_or_create 的 Django 表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2297820/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com