gpt4 book ai didi

python - Django 中的多对一关系查询

转载 作者:太空宇宙 更新时间:2023-11-04 07:25:30 25 4
gpt4 key购买 nike

谁能告诉我,我怎样才能访问与特定组相关的所有联系人?我是 Django 的新手并且这样做了(根据文档):

def view_group(request, group_id):
groups = Group.objects.all()
group = Group.objects.get(pk=group_id)
contacts = group.contacts.all()
return render_to_response('manage/view_group.html', { 'groups' : groups, 'group' : group, 'contacts' : contacts })

“groups”是不同的东西,我用“group”和“contacts”试过了,但得到了一个

'Group' object has no attribute 'contacts'

异常。

这是我正在使用的模型

from django.db import models

# Create your models here.

class Group(models.Model):
name = models.CharField(max_length=255)
def __unicode__(self):
return self.name

class Contact(models.Model):
group = models.ForeignKey(Group)
forname = models.CharField(max_length=255)
surname = models.CharField(max_length=255)
company = models.CharField(max_length=255)
address = models.CharField(max_length=255)
zip = models.CharField(max_length=255)
city = models.CharField(max_length=255)
tel = models.CharField(max_length=255)
fax = models.CharField(max_length=255)
email = models.CharField(max_length=255)
url = models.CharField(max_length=255)
salutation = models.CharField(max_length=255)
title = models.CharField(max_length=255)
note = models.TextField()
def __unicode__(self):
return self.surname

提前致谢!

编辑:哦,谁能告诉我如何向群组添加联系人?

最佳答案

一种方式:

group = Group.objects.get(pk=group_id)
contacts_in_group = Contact.objects.filter(group=group)

另一种更惯用的方式:

group = Group.objects.get(pk=group_id)
contacts_in_group = group.contact_set.all()

contact_set 是关系的默认 related_name,如 related objects docs 中所示.

如果你愿意,你可以在定义字段时指定你自己的related_name,比如related_name='contacts' 然后你可以做group。联系人.all()

要将新的联系人添加到组中,您只需通过组字段将相关组分配给联系人并保存联系人:

the_group = Group.objects.get(pk=the_group_id)
newcontact = Contact()
...fill in various details of your Contact here...
newcontact.group = the_group
newcontact.save()

听起来您会喜欢阅读免费的 Django Book掌握这些基础知识。

关于python - Django 中的多对一关系查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3690825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com