Joh*_*ohn 22 django django-forms
我正在使用Django ModelForms来创建表单.我已经设置了表单并且工作正常.
form = MyForm(data=request.POST)
if form.is_valid():
form.save()
Run Code Online (Sandbox Code Playgroud)
我现在想要的是首先检查表单是否存在相同的记录.如果是的话,我希望它获取该对象的id,如果不是,我希望它将它插入数据库,然后给我该对象的id.是否可以使用以下内容:
form.get_or_create(data=request.POST)
Run Code Online (Sandbox Code Playgroud)
我知道我能做到
form = MyForm(instance=object)
Run Code Online (Sandbox Code Playgroud)
在创建表单时,但这不起作用,因为我仍然想要没有对象实例的情况
编辑:
说我的模型是
class Book(models.Model):
name = models.CharField(max_length=50)
author = models.CharField(max_length=50)
price = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)
我想要一个有人可以填写书籍的表格.但是,如果数据库中已有一本书具有相同的名称,作者和价格,我显然不希望再次添加此记录,所以只想找出它的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)
Run Code Online (Sandbox Code Playgroud)
谢谢
rz.*_*rz. 31
我喜欢这种方法:
if request.method == 'POST':
form = MyForm(request.POST)
if form.is_valid():
book, created = Book.objects.get_or_create(**form.cleaned_data)
Run Code Online (Sandbox Code Playgroud)
这样您就可以利用模型表单的所有功能(除了.save())和get_or_create快捷方式.
| 归档时间: |
|
| 查看次数: |
8587 次 |
| 最近记录: |