3

データが存在するかどうかを確認するための「方法」であるdjangoを使用しますか?

getでtry/catchブロックを使用するかlen、フィルターでaのサイズを確認することができます。

すなわち

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

また

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

私は「最高」を次のように定義していると思います

a。標準的な方法b。より効率的な方法

または本当の違いはありませんか?それとも、無党派の第三の道はありますか?

4

4 に答える 4

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
于 2012-06-14T01:11:36.010 に答える
0

DemoModel.objects.filter(id = blah blah blah).exists()と言うことができます。try / catchパターンも適切に機能します。コード内でオブジェクトが実際に存在することを期待したい場合は、try / catchを使用し、オブジェクトが存在しない場合は.exists()句を使用します。既存は通常通りのビジネスです=)

于 2012-06-14T01:06:04.907 に答える
0

以下のコードでごめんなさい。「データがそこにあるかどうかを知るために」というトピックについては、そうではないかもしれませんが、それでも役立つ場合があります。:)テンプレートの適切な方法はそれ自体です。そうでない場合、私のapiの例/ドキュメントのリンクは、特定の保存されたモデルインスタンスの存在を確認することに関する質問に答えるはずです。

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

djangoドキュメントからフィルターを使用してチェーンするオブジェクトを取得します。

>>> 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がtrueまたはfalseであることを認識しているモデルインスタンスにいて、簡単に実行できます。

{%if DemoModel == True%}何かを行う{%endif%}

DemoModelがブールフィールドであると仮定すると、そうでない場合はラップできます。さらに、上記のAPIローカルは、テンプレートタグフィルターを使用して適用できます。

于 2012-06-14T05:13:37.083 に答える
0

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

于 2012-06-14T05:38:45.140 に答える