我想检查数据库中是否存在该对象,如果它不存在,则将其添加到数据库中。 我试过了:
if not MyModel.objects().get(surname='foo'):
management.call_command('loaddata', 'Bootstrap_data', verbosity=0)#adds this object from fixtures
但是我从db(sqlite3)得到了一个查询错误。如何解决这种对象验证方式?
错误是:
DoesNotExist at /
MyModel matching query does not exist.
这是因为db中没有这个姓氏的对象。
答案 0 :(得分: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(....)
OR
if not MyModel.objects.filter(surname='foo').exists():
management.call_command(....)
答案 1 :(得分:1)
if not MyModel.objects.filter(surname='foo').exists()
答案 2 :(得分:1)
您的代码存在的问题是MyModel.objects.get
会引发DoesNotExist
,请尝试使用exists
代替:
if not MyModel.objects.filter(surname='foo').exists():
management.call_command('loaddata', 'Bootstrap_data', verbosity=0)