Django-views.py:如何执行内连接

时间:2017-01-21 10:15:11

标签: python django join django-models

我有以下两种模式:

class Table1(models.Model):
    locker_id = models.IntegerField(primary_key=True)
    locker_name = models.CharField(db_column='Locker_name', max_length=45, blank=True, null=True)  # Field name made lowercase.
    city = models.CharField(max_length=45, blank=True, null=True)
    state = models.CharField(max_length=45, blank=True, null=True)
    pincode = models.CharField(max_length=45, blank=True, null=True)
    locker_capacity = models.CharField(max_length=45, blank=True, null=True)

class Table2(models.Model):
    key = models.AutoField(primary_key=True)
    locker = models.ForeignKey(Table1)
    empty_slots = models.CharField(max_length=45, blank=True, null=True)

现在使用django和python我想进行以下查询并返回一个新的元组结构。 SQL类比如下:

SELECT *
FROM Table1
INNER Table2
ON Table1.locker_id=Table2.locker_id;

任何人都可以帮我解决语法或任何参考问题。三江源。

1 个答案:

答案 0 :(得分:0)

您可以使用QuerySet.select_related

Table2.objects.all().select_related('locker')

要获取元组结构,请使用QuerySet.values_list

Table2.objects.all().select_related('locker') \
      .values_list('locker__locker_id', 'locker__locker_name',
                   'locker__city', 'locker__state', 'locker__pincode',
                   'locker__locker_capacity', 'key', 'empty_slots')

# If you don't specify fields, you will get fields of Table2 only.