1

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

class Entry(models.Model):
    #fields....


class EntryHistory(models.Model):
     entry = models.OneToOneField(Entry, related_name='history')
     text =.....etc

しかし、entry.history にアクセスしようとすると、DoesNotExist 例外が発生します。

シェル内のコード

entry = Entry.objects.get(pk = 4)
entry_history = entry.history
    raise self.related.model.DoesNotExist
DoesNotExist

特定のエントリに entry_history が追加されているかどうかを確認したい。だから私はentry.historyを取得してチェックしたい

if entry_history:

entry_history があったかどうかを確認します。DoesNotExist とはどういう意味ですか?

 hasattr(entry, 'history')

も false を返します。

編集: SQL テーブル作成コード

CREATE TABLE "mycal_entryhistory" ("id" integer NOT NULL PRIMARY KEY, "entry_id" integer NOT NULL UNIQUE, "text" text NULL, "doctor_id" integer NOT NULL)

テーブルが正しく作成されていないということですか?

4

1 に答える 1

2

特定のエントリに entry_history が追加されているかどうかを確認する必要がありrelated.model.DoesNotExist、それが存在しないことを意味するため、例外は質問への回答です。

entry = Entry.objects.get(pk=4)
try:
    entry_history = entry.history
    # if this code runs it means the object exists
except entry.history.model.DoesNotExist:
    # it does not exist

または、count を使用することもできます。

entry = Entry.objects.get(pk=4)
if entry.history.count():
    # it does exist
于 2013-11-05T13:04:09.627 に答える