使用'through'模型获得与ManyToManyField相反的关系

时间:2015-09-15 16:00:48

标签: django

假设我有以下模型,我会跟踪一个人移动城镇的日期以及该人之前的城镇信息:

class Town(models.Model):
    name = models.CharField(max_length=128)
    zipcode = models.PositiveSmallIntegerField(unique=True)

class TownHistory(models.Model):
    town = models.ForeignKey(Town)
    person = models.ForeignKey(Person)
    move_date = models.DateField()

class Person(models.model):
    towns = models.ManyToManyField(Town, through='TownHistory')

转到town_detail页面时,我想要了解{{1>}当前当前QuerySet个{ {1}}。 我对获取Person不感兴趣,我只想概述Town当前 move_date

换句话说:如果移动了Person,则Town应仅包含最新城镇,而不是之前的城镇。

获取此数据的最佳解决方案是什么? 我可以通过一些黑客来实现这一点,例如:

Person

但是后来我没有得到QuerySet,我认为应该有一个“更清洁”的解决方案?我也尝试过使用for person in Person.objects.all(): person.townhistory_set.latest('move_date') # add this one to a list ,但这没有帮助。

使用Django 1.8 LTS。

0 个答案:

没有答案