我需要使用get_or_create()之类的东西,但问题是我有很多字段,我不想设置默认值(这无论如何都没有意义),如果我不设置默认值,它会返回一个错误,因为它显然会立即保存对象.

我可以将字段设置为null=True,但我不需要空字段.

是否有任何其他方法或任何额外的参数可以发送给get_or_create(),以便它实例化一个对象,但直到我对其调用save()时才保存该对象?

谢谢你.

推荐答案

您只需执行以下操作:

try:
    obj = Model.objects.get(**kwargs)
except Model.DoesNotExist:
    obj = Model(**dict((k,v) for (k,v) in kwargs.items() if '__' not in k))

这几乎就是get_or_create人的所作所为,没有人promise .

Django相关问答推荐

Django Signals:从实例访问ManyToManyRel值

Django中的判断约束

通过 B 的外键列表访问模型 B 的行

自定义身份验证 django

Django Rest Framework 认证类覆盖 request.user

Django Rest Framework 速率限制动态基于用户类型

Django 独立脚本

如何运行克隆的 Django 元素?

如何在 django 模板中将名称反转为绝对 url?

magic有什么问题?

django excel xlwt

在 virtualenv Ubuntu 12.10 中使用 pip 安装 lxml 错误:command 'gcc' failed with exit status 4

在 Django 中舍入小数点

如何在 Django 中测试自定义模板标签?

django 模板列表变量中的最后一个元素

将 jQuery 脚本添加到 Django 管理界面

django-rest-framework 接受 JSON 数据?

如何在 django 中仅获取表的特定列?

Django 在 css 文件中使用背景图像的方法

如何更改 ModelForm 中所有 Django 日期字段的默认小部件?