【发布时间】:2018-05-17 10:05:56
【问题描述】:
我正在创建一个资源页面,我有以下模型:
class Tag(models.Model):
title = models.CharField(max_length=50, blank=False, unique=True, error_messages={'unique':"THis tag already exists."})
class Link(models.Model):
title = models.CharField(max_length=100, blank=False)
tag = models.ForeignKey(Tag, on_delete=models.CASCADE, null=False, blank=False)
哪些字段较多,但与本题无关。
这个资源页面的问题是仍然出现没有与它们建立关系的链接的标签,我只希望它们下至少有一个链接的标签出现。
现在,我已经设法通过这个查询集过滤来做到这一点:
tags = Tag.objects.all().filter(link__isnull=False).order_by("title").distinct()
在我的views.py 中工作正常,我想要的已经完成了。请注意,“distinct”是必需的,这样它就不会返回重复的查询。
我对 MySQL 的经验很少,只用它和 PHP 构建了非常简单的应用程序。我现在知道它在 SQLite 下是如何工作的,我什至不知道如何在 MySQL 下做到这一点。
根据我的(非常非正式的)逻辑,它的功能是这样的(请原谅我扼杀了语言):
SELECT * FROM Tags WHERE NUMBER_OF_RELATIONSHIPS IS GREATER THAN 0
我的问题实际上是如何通过原始 SQL 查询来实现这一点,无论是在 SQLite 还是 MySQL 下?
【问题讨论】:
-
我对 Django 将我从 SQL 中解放出来的程度感到有些困扰。当然,它有助于提高工作效率,但我感觉像是在学习轮子之类的东西。
标签: python mysql sql django sqlite