在django中获取onetoonemodel引用的模型中的项目
Getting items in model referenced by a onetoonemodel in django
我有这个数据库布局
class Clinic(models.Model):
class Menu(models.Model):
...
menu = models.OneToOneField(Clinic, related_name='menu')
class Item(models.Model):
...
menu = models.ForeignKey('Menu')
并且我想从我的诊所模型访问我的菜单模型和链接到该菜单的项目。
我试过了
In [5]: clinic = Clinic.objects.get(pk=1)
In [12]: clinic.menu
Out[12]: <Menu: Menu object>
In [13]: clinic.menu.objects.all()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-13-2aff8882b6ad> in <module>()
----> 1 clinic.menu.objects.all()
/Users/gabriel/.virtualenvs/meed_waps/lib/python3.4/site-packages/django/db/models/manager.py in __get__(self, instance, type)
253 def __get__(self, instance, type=None):
254 if instance is not None:
--> 255 raise AttributeError("Manager isn't accessible via %s instances" % type.__name__)
256 return self.manager
257
AttributeError: Manager isn't accessible via Menu instances
但它告诉我经理无法访问它。从概念上讲,我似乎应该能够通过像这样的诊所 > 菜单 > 项目这样的诊所模型追踪关系来访问项目并获得列表。还有其他方法我应该这样做吗?
试试这个:
Clinic.objects.get(pk=1).menu.item_set.all()
clinic.menu.objects
是 Menu
模型的 ModelManager
- 请注意它是 Menu
class[= 的属性25=],不是你的 clinic.menu
实例。 ModelManager
classes 用于查询底层 table,并且不应该直接从实例调用(无论如何都没有多大意义),因此出现错误消息。
Conceptually it seems like I should be able to access the items and get a list by tracing the relationship down through the clinic model like this Clinic > Menu > Items
这确实是可能的(希望如此),但是您在 clinic.menu.objects
中的什么地方提到了 items
?你想要clinic.menu.item_set.all()
。
我有这个数据库布局
class Clinic(models.Model):
class Menu(models.Model):
...
menu = models.OneToOneField(Clinic, related_name='menu')
class Item(models.Model):
...
menu = models.ForeignKey('Menu')
并且我想从我的诊所模型访问我的菜单模型和链接到该菜单的项目。
我试过了
In [5]: clinic = Clinic.objects.get(pk=1)
In [12]: clinic.menu
Out[12]: <Menu: Menu object>
In [13]: clinic.menu.objects.all()
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-13-2aff8882b6ad> in <module>()
----> 1 clinic.menu.objects.all()
/Users/gabriel/.virtualenvs/meed_waps/lib/python3.4/site-packages/django/db/models/manager.py in __get__(self, instance, type)
253 def __get__(self, instance, type=None):
254 if instance is not None:
--> 255 raise AttributeError("Manager isn't accessible via %s instances" % type.__name__)
256 return self.manager
257
AttributeError: Manager isn't accessible via Menu instances
但它告诉我经理无法访问它。从概念上讲,我似乎应该能够通过像这样的诊所 > 菜单 > 项目这样的诊所模型追踪关系来访问项目并获得列表。还有其他方法我应该这样做吗?
试试这个:
Clinic.objects.get(pk=1).menu.item_set.all()
clinic.menu.objects
是 Menu
模型的 ModelManager
- 请注意它是 Menu
class[= 的属性25=],不是你的 clinic.menu
实例。 ModelManager
classes 用于查询底层 table,并且不应该直接从实例调用(无论如何都没有多大意义),因此出现错误消息。
Conceptually it seems like I should be able to access the items and get a list by tracing the relationship down through the clinic model like this Clinic > Menu > Items
这确实是可能的(希望如此),但是您在 clinic.menu.objects
中的什么地方提到了 items
?你想要clinic.menu.item_set.all()
。