将Django模型合并到视图中

bnl4lu3b  于 2023-01-14  发布在  Go
关注(0)|答案(1)|浏览(108)

我正在尝试将三个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))
d5vmydt9

d5vmydt91#

您实际上是在使用所提供的代码做您需要做的事情。当您在连接这两个实体(PlayersEvents)的模型上调用查询时,当您尝试通过外键字段访问其中的每个属性时,它会执行连接。
例如,为了访问玩家信息(这使得Django ORM在后台执行join操作):

# Get the first name of the player
first_name = playerinfo.player.firstName

要在其他位置进行过滤和显示,可以使用符号field__subfield
如需了解更多信息,请阅读本网站的示例:https://books.agiliq.com/projects/django-orm-cookbook/en/latest/index.html

相关问题