我正在尝试将三个Django模型中的数据合并到一个视图中。在Details模型中,玩家和事件通过models.ForeignKey相互关联(一个玩家可以参加很多事件)。
在其他平台中,我会编写一个DB视图来连接表,应用程序将查询该视图。
据我所知Django不支持模型中的数据视图。
寻求帮助,我将如何在Django处理这一问题。
class Players(models.Model):
firstName = models.CharField(max_length=255)
lastName = models.CharField(max_length=255)
highSchool = models.CharField(max_length=255)
gradYear = models.IntegerField()
slug = models.SlugField(default="", null=False)
class Events(models.Model):
title = models.CharField(max_length=255)
location = models.CharField(max_length=255)
date = models.DateField()
class Details(models.Model):
event = models.ForeignKey(Events, on_delete=models.CASCADE)
player = models.ForeignKey(Players, on_delete=models.CASCADE)
height = models.IntegerField(default=None, blank=True)
weight = models.IntegerField(default=None, blank=True)
def playerdetail(request,slug):
playerinfo = Details.objects.get(id=1)
template = loader.get_template('playerdetail.html')
context = {
'playerinfo': playerinfo,
}
return HttpResponse(template.render(context, request))
1条答案
按热度按时间d5vmydt91#
您实际上是在使用所提供的代码做您需要做的事情。当您在连接这两个实体(
Players
,Events
)的模型上调用查询时,当您尝试通过外键字段访问其中的每个属性时,它会执行连接。例如,为了访问玩家信息(这使得Django ORM在后台执行join操作):
要在其他位置进行过滤和显示,可以使用符号
field__subfield
如需了解更多信息,请阅读本网站的示例:https://books.agiliq.com/projects/django-orm-cookbook/en/latest/index.html