问题: 我有两个django型号:
class Driver(models.Model):
event = models.ForeignKey('Event')
last_event = ????
...
...
class Event(models.Model):
date = models.IntegerField()
现在我只需要每个驱动程序PREFETCHED和CACHED
的最后一个事件d = Driver.objects.prefetch_related('last_event???')
我如何实现它? 有没有办法限制关系,如:
last_event = models.ForeaignKey('Event', filter = ...??? )
答案 0 :(得分:0)
为了避免产生循环依赖关系,您可以在Event模型中定义驱动程序的所有外键,并且由于驱动程序可能有很多事件。
class Event(models.Model):
driver = models.ForeignKey(Driver, related_name='events')
date = models.IntegerField()
created_at = models.DateTimeField(auto_now_add=True)
objects = EventManager()
然后在事件管理器中定义一个last_event属性,如下所示:
class EventManager(models.Manager):
@property
def last_event(self, driver):
return self.filter(driver=driver).lastest('created_at')
然后你可以通过Event.objects.last_event(driver)
来调用它如果要使用driver.last_event,则可以在Driver模型中定义last_event属性:
class Driver(models.Model):
...
@propery
def last_event(self):
the_last_event = Event.objects.last_event(self)
return the_last_event
答案 1 :(得分:0)
我已经通过添加:
来解决问题"../src/assets/material-icons.css"
所以现在它按照我的计划行事:就像一个可缓存的属性