我不是100%这对Django来说是新手的。我想列出属于我的组的所有联系人first_name。我只加载组以保存击中DB两次我被告知使用select_related来实现这一点。以下是我的尝试。有人可以解释一下我做错了什么吗?谢谢。
model.py
class Group(models.Model):
name = models.CharField(max_length=60)
user = models.ForeignKey(User, related_name="user")
class Contact(models.Model):
first_name = models.CharField(max_length=60)
group = models.ForeignKey(Group)
m view.py
的一部分 if id:
# If we have an id try and get it and populate instance.
group = get_object_or_404(Group.objects.select_related(), pk=id)
show_upload = True
# If we have an instance check that it belongs to the login.
if group.user != request.user:
return HttpResponseForbidden()
模板的一部分我试图列出联系人first_name
{% for item in group.contact %}
<tr>
{{ item.first_name }}
</tr>
{% endfor %}
答案 0 :(得分:0)
你可以这样做:
group_instance.contact_set.all().values_list('first_name',flat=True)
请参阅此页面上的example有关相关对象的信息。 (“访问外键值”部分)
select_related用于数据库级别的JOIN。
使用get_object_or_404
描述了here。
def my_view(request):
my_object = get_object_or_404(MyModel, pk=1)
相当于
def my_view(request):
try:
my_object = MyModel.objects.get(pk=1)
except MyModel.DoesNotExist:
raise Http404