Python django基于值传递参数

Python django基于值传递参数,python,django,Python,Django,我在django模型中定义了可选变量。在我看来,我可能有这些价值观,也可能没有。我想创建这个对象,而不用担心向django模型发送None参数 例如,Book对象有一个标题,但publisher是可选的 在我看来,现在我正在做一些类似的事情 if publisher is None: Book.objects.create(title=title) else: Book.objects.create(title=title, publisher=publisher) 现在,如果

我在django模型中定义了可选变量。在我看来,我可能有这些价值观,也可能没有。我想创建这个对象,而不用担心向django模型发送None参数

例如,Book对象有一个标题,但publisher是可选的

在我看来,现在我正在做一些类似的事情

if publisher is None:
    Book.objects.create(title=title)
else:
    Book.objects.create(title=title, publisher=publisher)
现在,如果有多个可选字段,这是不可管理的。解决方案是什么?

使用**运算符如何:

attrs = {'title': title}
if publisher is not None:
    attrs['publisher'] = publisher
Book.objects.create(**attrs)
更新备选方案-使用Model.save:

看看这个:

基本上创建一个类似args的数组,然后将其作为*args传递给所需的方法

您也可以使用**kwargs执行类似操作。看看这个:


把其他答案分开。。。试试这个

def make_book(**kwargs):
    query = {key: value for key, value in kwargs.items() if value}
    Book.objects.create(**query)
我建议在您的模型管理器中将其声明为一种方法,以便您可以在任何需要的地方快速创建实例

Book.objects.make_book(title="The Title",publisher=None)
Model.objects.create仅接受关键字参数。
Book.objects.make_book(title="The Title",publisher=None)