Как мы можем объединить две таблицы в Django? - PullRequest
0 голосов
/ 03 апреля 2019

Возможно ли объединить две модели (таблицы) на основе общего ключа (внешнего ключа) в Django?Если это так, пожалуйста, объясните это на примере.Я просмотрел документацию по Django для этого.Но я узнал, как выполнять необработанные SQL-запросы в django.

Спасибо

1 Ответ

0 голосов
/ 03 апреля 2019

Вот пример из Документация Django :

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 ):

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
...