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

4c8rllxm  于 2023-08-08  发布在  Go
关注(0)|答案(2)|浏览(109)

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


但所有返回的错误为

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

mw3dktmi

mw3dktmi1#

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

axkjgtzd

axkjgtzd2#

您可以使用Note对象访问NoteLabel对象,然后使用NoteLabel对象访问ColorLabelstitlevalue字段,如下所示:

note = Note.objects.get(pk=1)

note.notelabel.color_label.title # Here
note.notelabel.color_label.value # Here

字符串

相关问题