0

私は次のモデルを持っています:

class People(models.Model):
    name = models.CharField(max_length=100)
    lastname = models.CharField(max_length=100) 

views.py で

-これを試してみると:

 if People.objects.get(id=my_id):
        o=People.objects.get(id=my_id)
        oh=o.name
    else:
        send_notification_to_add_that_id(my_id)

私はこれを得る:

People query matching does not exist. 

私が欲しいのは、そのレコードと一致するものがあればmy_id、テーブル内でクエリを実行し、それ以外の場合はメソッドをトリガーすることです。最初の「if 条件」にそのようなレコードがない場合、上記のエラーが発生します。この問題を回避するには?テーブル内のレコードの存在を知る良い方法は何ですか?Peopleidsend_notification_to_add_that_id

4

1 に答える 1

4

例外をスローしています:

クエリに一致する結果がない場合、get() は DoesNotExist 例外を発生させます。

だからあなたはそれを処理する必要があります:

try:
    People.objects.get(id=my_id)
except People.DoesNotExist:
    send_notification_to_add_that_id(my_id)

あるいは、あなたができる

people = People.objects.filter(id=my_id)
if people.exists():
    person = people[0]

asfilterは結果がない場合は例外を発生させません。単純に空を返しますQuerySetが、これには複数のオブジェクトを返すリスクがあるため、最初の例ほど意味がありません。

余談ですが、それがモデルによって表されているもの、またはDBの場合はテーブルの各行であるため、Person代わりにモデルを呼び出す方が理にかなっています。People

于 2012-11-01T18:38:00.667 に答える