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)
我想访问关联的 ColorLabels
的 title
和 value
字段或 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
应该有效。
我在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)
我想访问关联的 ColorLabels
的 title
和 value
字段或 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
应该有效。