Django查询联接两个表

时间:2019-11-11 19:35:04

标签: django inner-join django-queryset

我是新来的django。我想在尝试使用select_related的django中创建查询,但是我不知道如何插入条件的第二部分:AND model1.qty >= model2.items

我尝试过:

Model1.objects.select_related('model2).filter(model1.qty__gte=?)

但是它不能正常工作。

下面是我要使用Django queryset实现的SQL查询:

 SELECT model1.name,model2.name WHERE model1.id=model2.model1.id AND model1.qty >= model2.items 

我的模特:

class Article(models.Model): 
    date_crea = models.DateTimeField('Créer le', auto_now_add=True)
    designation = models.TextField('designation', max_length=500)
    seuil = models.IntegerField('Seuil d\'alerte')

class Stock(models.Model):
    date_crea = models.DateTimeField('Créer le', auto_now_add=True)
    article = models.ForeignKey(Article, on_delete=models.CASCADE)
    qte_reel = models.IntegerField('stock reel',default=0)

1 个答案:

答案 0 :(得分:0)

您使用F expression来引用数据库中字段的值。从当前对象到要比较的对象上的字段之间必须存在关系。

我不清楚问题与发布的模型之间的关系,但是F表达式可以跟随外键,所以

Stock.objects.filter( qte_reel__gte = F( 'article__seuil' ))

将可以工作,如果这些字段是您要比较的字段。