社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Django

我们怎么能在Django连上两张桌子?

Vicky • 4 年前 • 778 次点击  

在django中,是否可以基于公共键(外键)连接两个模型(表)?如果是,请举例说明。我通过Django文档对此进行了研究。但我了解了如何在Django中执行原始SQL查询。

谢谢

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/46399
 
778 次点击  
文章 [ 2 ]  |  最新文章 3 年前
M.Fooladgar
Reply   •   1 楼
M.Fooladgar    5 年前

下面是一个来自 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