django 一对一字段获取关联数据

django get associated data one to one field

我在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)

Note

为对象
note = Note.objects.get(pk=1)

我想访问关联的 ColorLabelstitlevalue 字段或 NoteLabel 对象。

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

note.note_label
note.NoteLabel
note.note_label_set

但所有returns错误为

AttributeError: 'Note' object has no attribute 'note_label_set'

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