2012-06-14 90 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():

相關問題