我们如何在django中加入两个表?

问题描述 投票:-2回答:1

是否可以在Django中基于公共密钥(外键)连接两个模型(表)?如果是这样,请举例说明。为此,我浏览了Django文档。但我着手如何在django中执行原始SQL查询。

谢谢

python django django-models
1个回答
-1
投票

以下是Django Documentation的一个例子:

from django.db import models

class Reporter(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    email = models.EmailField()

    def __str__(self):
        return "%s %s" % (self.first_name, self.last_name)

class Article(models.Model):
    headline = models.CharField(max_length=100)
    pub_date = models.DateField()
    reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)

    def __str__(self):
        return self.headline

    class Meta:
        ordering = ('headline',)

通过这个例子,您可以通过以下方式轻松访问文章的记者:

print(article.reporter.firstname, article.reporter.last_name)

但是如果你包括运行原始SQL查询,这里有一个例子(关于Django documentation的更多细节):

from django.db import connection

def my_custom_sql(self):
    with connection.cursor() as cursor:
        cursor.execute("UPDATE bar SET foo = 1 WHERE baz = %s", [self.baz])
        cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz])
        row = cursor.fetchone()

    return row
© www.soinside.com 2019 - 2024. All rights reserved.