这是来自django的第一个应用程序proizvodi的类中的表:
class Meblovi(models.Model):
class Meta:
verbose_name_plural = "Meblovi"
#OSNOVNI_PODACI
ime_proizvoda = models.CharField(max_length=120)
proizvodjac = models.CharField(max_length=120, default="proizvodjac")
sastav = models.CharField(max_length=120, default="sastav")
sirina = models.CharField(max_length=120, default="sirina")
zemlja_porekla = models.CharField(max_length=120, default="zemlja porekla")
stara_cena = models.DecimalField(decimal_places=2,max_digits=10,default=795.00)
nova_cena = models.DecimalField(decimal_places=2,max_digits=10,default=795.00)
na_lageru = models.BooleanField()
rok_isporuke = models.CharField(max_length=120, default="3 dana")
jedinica_mere = models.CharField(max_length=120, default="po dužnom metru")
#SLIKE
glavna_slika = models.ImageField(upload_to='proizvodi/', null=True, blank=True)
#KARAKTERISTIKE
vodootporan = models.BooleanField(default=False)
vodoodbojan = models.BooleanField(default=False)
nezapaljiv = models. BooleanField(default=False)
#OSTALO
izdvojeno = models.BooleanField()
def __str__(self):
return self.ime_proizvoda
现在,这是另一个应用程序中的表格:
class Podmeblovi(models.Model):
class Meta:
verbose_name_plural = "Meblovi - podvrste"
#OSNOVNI_PODACI
model_mebla = models.CharField(max_length=120)
mebl = models.ForeignKey(Meblovi, on_delete=models.CASCADE)
slika = models.ImageField(upload_to='proizvodi/', null=True, blank=True)
#BOJE
bela = models.BooleanField(default=False)
svetlo_siva = models.BooleanField(default=False)
tamno_siva = models.BooleanField(default=False)
crna = models.BooleanField(default=False)
bez = models.BooleanField(default=False)
braon = models.BooleanField(default=False)
zuta = models.BooleanField(default=False)
narandzasta = models.BooleanField(default=False)
crvena = models.BooleanField(default=False)
bordo = models.BooleanField(default=False)
svetlo_zelena = models.BooleanField(default=False)
tamno_zelena = models.BooleanField(default=False)
svetlo_plava = models.BooleanField(default=False)
tamno_plava = models.BooleanField(default=False)
pink = models.BooleanField(default=False)
ljubicasta = models.BooleanField(default=False)
#DIZAJN
jednobojno = models.BooleanField(default=False)
sareno = models.BooleanField(default=False)
def __str__(self):
return self.mebl.ime_proizvoda + " " + self.model_mebla
所以我想要做一个SQL查询,该查询返回表Podmeblovi(第二个应用程序)中的内容,但前提是表Meblovi(第一个应用程序)“ vodootporan”中的字段等于1。我尝试了INNER JOIN,但没有这样做似乎行得通。另外,我想使用RIGHT JOIN,但是它说在Django中还不能使用。 我的第二个应用程序表通过外键连接到第一个应用程序表。为了更好地说明,第一个应用程序表是产品的基本默认信息表。因此,例如,如果我们有一个名为Portland的面料产品,那么我们将在第二个应用程序中获得其子产品。它们是不同的颜色和设计,但价格和其他规格对它们而言是相同的。那我该如何解决这个问题呢?
我尝试过的事情:
SELECT * FROM modeli_meblova_podmeblovi
INNER JOIN "proizvodi_meblovi" ON ("proizvodi_meblovi"."vodootporan" = "meblovi")
WHERE "proizvodi_meblovi" = 1
这确实没有错误,但是在我的数据库中,我为“ vodootporan”字段检查了产品是否为true,但是sql没有从数据库返回任何模型。
请明确一点,我需要sql查询,因为我有很多与此集成的过滤器。其他过滤器来自基表,而不是联合表。
答案 0 :(得分:0)
您没有展示您尝试过的内容。但这应该可行:
Podmeblovi.objects.filter(mebl__vodootporan=True)