【发布时间】:2017-06-24 20:33:01
【问题描述】:
Django 文档并没有明确说明这一点,而且它越来越烦人。
观察以下模型:
# models
class Venue(models.Model):
name = models.CharField(max_length=150, blank=False)
description = models.CharField(max_length=1000)
image = models.ImageField(upload_to=imgUnique('venueMedia/venueImages'))
streetAddress= models.CharField(max_length=100)
city = models.CharField(max_length=100, blank=False)
state = models.CharField(max_length=100, blank=False)
class Room(models.Model):
name = models.CharField(max_length=150, blank=False)
venue = models.ForeignKey(Venue, related_name='rooms', on_delete=models.CASCADE)
description = models.CharField(max_length=1000)
standingCapacity = models.IntegerField
seatedCapacity = models.IntegerField
image = models.ImageField(upload_to=imgUnique('venueMedia/venueImages'))
我在房间venue 属性的Room 模型中与Venue 有外键关系。
我需要加入这些表格吗?或者Venue.objects.all() 会自动为我做这件事吗?如果没有,我有如下的原始 sql 这将起作用:
venueList = Venue.objects.raw('''SELECT *
FROM venue_Venue
INNER JOIN venue_Room
ON venue_Venue_id=venue_Room_id''')
如果不是这样,那么我知道有一个 select_related() 方法,我的理解是我会执行以下操作:
Venue.objects.all().select_related('Room')
我们能说清楚吗?如您所见,我做了很多研究,但仍然感到困惑
【问题讨论】:
-
venuel.objects.all() 将包含房间对象。您不需要编写原始查询或其他内容。例如
venue = Venue.objects.all()nd 如果您想获取房间名称,您可以使用@987654330 @..如果不让我知道,这将起作用 -
谢谢老兄,这很好
标签: python django orm foreign-key-relationship