如何在Django中获取`OneToOneField()`的关联数据?

Anu*_*TBE 8 python django django-models one-to-one associated-object

我工作于Django 2.0

我有一个Note用于保存笔记的模型,还有另外两个模型用于向笔记添加颜色标签。

class Note(models.Model):
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=250, blank=True, default='Untitled')
    content = models.TextField(blank=True)

class ColorLabels(models.Model):
    title = models.CharField(max_length=100, unique=True)
    value = models.CharField(max_length=100)
    default = models.BooleanField(default=False)

class NoteLabel(models.Model):
    note = models.OneToOneField(Note, on_delete=models.CASCADE)
    color_label = models.OneToOneField(ColorLabels, on_delete=models.CASCADE)
Run Code Online (Sandbox Code Playgroud)

与对象Note

note = Note.objects.get(pk=1)
Run Code Online (Sandbox Code Playgroud)

我想访问关联的ColorLabelstitle字段valueNoteLabel对象。

因为它们是一对一的字段。我尝试做

note.note_label
note.NoteLabel
note.note_label_set
Run Code Online (Sandbox Code Playgroud)

但所有返回错误为

AttributeError: 'Note' object has no attribute 'note_label_set'
Run Code Online (Sandbox Code Playgroud)

Iva*_*van 11

related_name除非您在 中定义OneToOneField,Django 将使用小写的模型名称来访问相关对象。所以,note.notelabel应该有效。