需要什么查询集?

时间:2011-02-16 21:00:06

标签: django django-queryset

我有以下型号:

PHONE_CHOICES = (
    ('home', 'Home'),
    ('home2', 'Home 2'),
    ('mobi', 'Mobile'),
    ('mobi2', 'Mobile 2'),
    ('work', 'Work'),
    ('work2', 'Work 2'),
)

class ClientPhone(models.Model):
    client = models.ForeignKey(Client, editable=False)
    created = models.DateTimeField(default=datetime.now, editable=False)
    created_by = models.ForeignKey(User,editable=False)
    phone_type = models.CharField(max_length=5, choices=PHONE_CHOICES)
    number = models.CharField(max_length=24)

我知道ClientPhone.objects.filter(client=i_clientKEY).latest('created')会告诉我输入数据库的最新电话号码,但我希望能够获得“家庭”,“home2”,“mobi”等最新的电话号码。 。(全部)为客户。

如何让查询集执行此操作?

2 个答案:

答案 0 :(得分:1)

latest()会返回单个查询对象,而不是列表,因此您将获得最新的tel。相关人员的记录。

如果您希望为每个phone_type获取最新的nmber,则必须执行不同的SQL查询,这意味着您必须为每个phone_type编写不同的查询...

@Aldarund:使用 phone_type__in 可以帮助您获取列表中某个元素(一个具有最新创建时间。)的phone_type的最新记录,但不是每个元素的最新记录。列表

答案 1 :(得分:0)

只需添加另一个参数即可过滤: ClientPhone.objects.filter(客户= i_clientKEY,PHONE_TYPE = '家')。最新的( '创造')