Django:如何在两个数据库表中进行搜索,或者两个表如何合并两个相关的类

时间:2019-08-14 06:49:59

标签: django-models

我正在尝试学习Django的基本技术,并且遇到了我无法解决的问题。

我有一个数据库,其中有两个表,其中包含一个人的信息,每个表都有三个列。表1具有行号,教育程度,职业,表2具有行号,生日,出生地。我想找到所有出生在芝加哥的老师。

在SQL中,这很简单:SELECT ... FROM table1 JOIN table2 ON ... WHERE ...

在Django中,在models.py中,我可以构造一个具有id,教育,专业属性的类Table1和一个具有id,生日,出生地的属性Table2。为了解决我的问题,我需要构造一个具有id,教育,职业,生日,出生地等属性的类Person,但是我无法从两个表中找到构造该类的方法。

有人可以提示我该怎么做吗?我们非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

Django需要知道您的两个模型(由两个表表示)已连接,因此在其中一个模型中包含外键:

class Musician(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    instrument = models.CharField(max_length=100)

class Album(models.Model):
    artist = models.ForeignKey(Musician, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    release_date = models.DateField()
    num_stars = models.IntegerField()

然后您可以进行以下查询:

Album.objects.filter(artist__last_name='Presley')

此查询由JOIN解决。

或者,您可以删除两个旧模型,并在一个地方包含所有需要的字段来创建新模型。请注意,如果您不想丢失任何数据,则必须编写自己的数据迁移。