【问题标题】:Join in Django views加入 Django 视图
【发布时间】:2015-08-03 19:09:18
【问题描述】:

我的 django 应用中有 2 个模型。 两种型号的对应表为:

Table 1:
+-------------+---------+------+-----+---------+----------------+
| Field       | Type    | Null | Key | Default | Extra          |
+-------------+---------+------+-----+---------+----------------+
| id          | int(11) | NO   | PRI | NULL    | auto_increment |
| post_id     | int(11) | NO   | MUL | NULL    |                |
| user_id     | int(11) | NO   | MUL | NULL    |                |
+-------------+---------+------+-----+---------+----------------+

Table2:
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| id            | int(11)      | NO   | PRI | NULL    | auto_increment |
| p_text        | varchar(200) | NO   |     | NULL    |                |
| p_slug        | varchar(50)  | YES  | MUL | NULL    |                |
| user_id       | int(11)      | NO   | MUL | NULL    |                |
+---------------+--------------+------+-----+---------+----------------+

现在我想要以最好的方式在我的 django 视图中编写与以下查询等效的内容?我想写的查询是一个简单的连接:

select B.p_slug from Table1 A, Table2 B where A.post_id = B.id;

我尝试过,但无法正常工作。请问有什么帮助吗?如何在 Django 视图中实现上述查询

模型是:模型1:

class Model1(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    post = models.ForeignKey(Model1)
class Model2(models.Model):
    p_text = models.CharField(max_length=200)
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    p_slug = models.SlugField(null=True,blank=True)

【问题讨论】:

  • Table1 post_id 是 Table2 的 fk 吗?
  • @Gocht 已添加模型
  • 我可以假设 Model1 帖子是 Model2 的 FK,并且您在查询之前获得了 B.id 的值吗?

标签: python mysql django join django-views


【解决方案1】:

试试这个:Model2.objects.filter(pk__in=Model1.objcts.values_list('post_id', flat=True)).values('p_slug')。希望对你有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-09
    • 2013-10-20
    • 2015-03-05
    • 1970-01-01
    • 1970-01-01
    • 2016-12-06
    • 2011-05-12
    • 1970-01-01
    相关资源
    最近更新 更多