sum*_*nth 1 django django-models one-to-one django-views django-select-related
我在Child模型中创建了一个OneToOneField(父)related_name='children'.在我的观点中,我曾经select_related得到了查询集.但在我的页面中,与父项关联的子项列表显示为空.
Models.py:
class Parent(models.Model):
item = models.CharField(max_length=20)
class Child(models.Model):
parent = models.OneToOneField(Parent, unique = True, related_name = 'children')
price = models.IntegerField()
Run Code Online (Sandbox Code Playgroud)
views.py:
def live_prices(request):
parent_queryset = Parent.objects.all().select_related('children')
return render(request, 'live_prices.html', 'parent_queryset' : parent_queryset)
Run Code Online (Sandbox Code Playgroud)
模板:
{% for parent in parent_queryset %}
{% child in parent.children.all %}
{{ child.price }}
{% endfor %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
它是一对一的字段,因此您只需访问parent.children(因为您有related_name='children')而不是循环访问parent.children.all().
由于只有一个孩子,我会删除related_name='children',然后你将访问parent.child而不是parent.children.您也不需要unique=True一对一的字段.
parent = models.OneToOneField(Parent)
Run Code Online (Sandbox Code Playgroud)
然后,在您的模板中:
{% for parent in parent_queryset %}
{{ parent.child.price }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
请注意,使用select_related不会更改您访问模板中对象的方式,它只会减少SQL查询的数量.
| 归档时间: |
|
| 查看次数: |
2204 次 |
| 最近记录: |