2012-06-14 62 views
3

使用Django,这是“办法”检查数据是否存在?检查数据是否存在于Django中的最佳方法是什么?

我知道我可以有一个得到一个try/catch块,或检查len的尺寸上的过滤器

try: 
    DemoModel.objects.get(id=8) 
catch DoesNotExist: 
    catch stuff here 

if not len(DemoModel.objects.filter(id=8): 
    do stuff here 

我想我定义“最好”为

一个。 b。标准方式 b。更有效的方式

或者是有没有真正的区别?还是有没有党派的第三种方式?

+3

它应该是DemoModel.objects.filter(id = 8).exists()。 – dannyroa

+0

owza。多谢兄弟。介意把这作为答复我upvote /接受? – bharal

回答

7

如果需要使用对象,使用try/catch语句。

try: 
    object = DemoModel.objects.get(id=8) 
    #use object here 
catch DoesNotExist: 
    #catch stuff here 

如果您不需要,只需使用exists()。

if DemoModel.objects.filter(id=8).exists(): 
    #do stuff here 
0

你可以说DemoModel.objects.filter(ID =等等等等等等).exists()。该try/catch语句模式能够合理以及 - 如果你想在你真的预期存在的对象,则可能使用的try/catch代码中的点,并使用.exists()子句当对象不现有照旧=)

0

对不起,以下代码。您可能会发现它很有用,但您仍然可能会关注“如果数据存在”。 :)对于模板的正确方法是这样的,否则我的api示例/文档链接应回答有关验证特定保存的模型实例是否存在的问题。

{% for DemoModel in object_list %} 
{% ifchanged %} 
do something 
{% else %} 
do something else 
{% endif %} 

从Django文档Retrievieng Objects使用和链接过滤器:

>>> Entry.objects.filter(
...  headline__startswith='What' 
...).exclude(
...  pub_date__gte=datetime.now() 
...).filter(
...  pub_date__gte=datetime(2005, 1, 1) 
...) 

对不起,我想你作为一个管理员都在谈论你。这显然是通过API。对不起,我认为你是新手,在不需要的时候使用模板语法。但是,是的,理想的情况是,如果您可以在DemoModel为True或DemoModel为false的模型实例中。这样你每次都会调用它,并且它被正确调用。在理想情况下,你是一个知道,而DemoModel是真的还是假的模型实例,你可以简单地做

{%如果DemoModel ==真%}做一些{%ENDIF%}

假设DemoModel被如果不是,你可以包装它。另外,上面的api local可以使用模板标签过滤器来应用。

0

if DemoModel.objects.filter(id=8).count():

相关问题