1

我有以下型号

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


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

但是当我尝试访问 entry.history 时,我得到了一个 DoesNotExist 异常

shell中的代码

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。不存在是什么意思?

 hasattr(entry, 'history')

也返回假。

编辑: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

或者,您可以使用计数:

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