Django对象存在性
我想检查一下某个对象在数据库里是否存在,如果不存在的话,就把它添加到数据库里。
我试过这样做:
if not MyModel.objects().get(surname='foo'):
management.call_command('loaddata', 'Bootstrap_data', verbosity=0)#adds this object from fixtures
但是我在数据库(sqlite3)里遇到了查询错误。请问怎么才能解决这种对象验证的问题呢?
错误信息是:
DoesNotExist at /
MyModel matching query does not exist.
这是因为数据库里没有这个姓氏的对象。
3 个回答
1
你代码的问题在于,MyModel.objects.get
这个方法会抛出一个 DoesNotExist
的错误,也就是说找不到你要的东西。你可以试试用 exists
这个方法来代替:
if not MyModel.objects.filter(surname='foo').exists():
management.call_command('loaddata', 'Bootstrap_data', verbosity=0)
1
if not MyModel.objects.filter(surname='foo').exists()
4
通常你会使用 get_or_create 这个方法。
model_instance = MyModel.objects.get_or_create(surname='foo')
其实你不应该用 management.call_command
来做这种事情。
不过,如果我理解错了,或者你有特别的理由要这样做,可以试试这个:
try:
MyModel.objects.get(surname='foo')
except MyModel.DoesNotExist:
management.call_command(....)
或者
if not MyModel.objects.filter(surname='foo').exists():
management.call_command(....)