visible = models.BooleanField()
owner = models.ForeignKey(User, null=True)
def update_address(**kwargs):
address = Address.objects.get(address=kwargs.get('address'))
try:
address.visible = kwargs.get('visible')
except:
pass
try:
address.owner = kwargs.get('owner')
except:
pass
update_address()
应该不会导致address.visible
或address.owner
发生任何事情。update_address(owner=None)
应删除设置的所有现有所有者对象。
让我困惑的是,如何判断owner=None
是否被显式设置,以便我知道删除现有的所有者对象,或者如果它被调用时没有设置owner
,所以我应该保持所有者的原样。
4条答案
按热度按时间tktrz96b1#
您可以使用“in”关键字来检查键是否存在,或者您可以在**dict.get(key,default)**函数的第二个参数中指定默认参数
如果你的super()类(即父模型)不接受可见参数,您可以使用**dict.pop(key,default)**提取参数,然后将其传递给超级模型。
6l7fqoea2#
可以使用
in
和keys
:ufj5ltwl3#
如果方便的话,你也可以设置自己的默认选项;通过创建
object
的示例,可以确保它与其他任何东西都不同注意使用
is
进行比较-这是可能的-并且推荐-因为我们正在检查是否有两个引用完全相同的对象-而不是像==
那样的值相等。qyswt5oh4#
如果你想做点什么如果它通过了,那么
或
如果您还想删除它(通常是因为超类不愿意看到它),请以相同的方式使用
pop
方法代替get
。比如说