Django对象存在

时间:2012-01-06 17:36:21

标签: python django django-models

我想检查数据库中是否存在该对象,如果它不存在,则将其添加到数据库中。 我试过了:

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中没有这个姓氏的对象。

3 个答案:

答案 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()

RTFriendlyM

答案 2 :(得分:1)

您的代码存在的问题是MyModel.objects.get会引发DoesNotExist,请尝试使用exists代替:

if not MyModel.objects.filter(surname='foo').exists():
    management.call_command('loaddata', 'Bootstrap_data', verbosity=0)