我希望有一个模型字段,它将返回另一个模型的最新相关内容。
一个例子 -
class Thing(models.Model):
name = models.CharField(max_length=200)
state = models.ForeignKey(State, query=latest) #pure fantasy
class State(models.Model):
change = models.DateTimeField(auto_now_add=True)
thing = models.ForeignKey(Thing)
假设模型类State与Thing有多对一的关系。
given- some_thing = Thing.object.all()[0]
我希望some_thing.state成为State的实例,它具有我手头的实例Thing的最新State.change值。
我想在Django Model级别指定一个实例变量来执行我上面描述的操作。我可以想到两种方法来做到这一点,但两者都没有达到这个水平:
答案 0 :(得分:0)
您不能拥有数据库级动态外键。但是,您可以拥有一个属性或方法来捕获您的项目:
class Thing(models.Model):
name = models.CharField(max_length=200)
@property
def state(self):
return State.objects.latest('change')
class State(models.Model):
change = models.DateTimeField(auto_now_add=True)
thing = models.ForeignKey(Thing)