【问题标题】:Explication Models and queries in djangodjango 中的解释模型和查询
【发布时间】:2018-08-30 12:10:09
【问题描述】:

我同时有疑问和问题,我有两个模型在deferents,像这样的项目

项目:TransactionMaster.models => TransactionMaster

class TransactionMaster(models.Model):
       user = models.ForeignKey(User, on_delete=CASCADE)
       trans_status = models.BooleanField()
       trans_name = models.CharField()

项目:TransactionDetails.models => TransactionDetail

from app.transactionMaster.models import TransactionMaster

class TransactionDetail(models.Model):
       transaction = models.ForeignKey(TransactionMaster, on_delete=CASCADE)
       current_status = models.IntegerField()
       transdetail_name = models.CharField() 

如何进行下一个 sql 查询

SELECT * FROM User as u inner join TransactionMaster as tm in u.id=tm.user_id inner join TransactionDetail as td in tm=td.transaction_id where tm.trans_status=td.current_status

SELECT * FROM TransactionMaster as tm inner join TransactionDetail as td in tm.id=td.transaction_id where tm.trans_status=td.current_status

我尝试这样的第二个查询:

TransactionDetail.object.filter(TransactionMaster__id=transaction_id, trans_status=TransactionMaster__current_status)

请帮我解决这个问题,请你回答我在不同项目的模型中可以做什么。

感谢您的关注 天使罗哈斯

【问题讨论】:

    标签: sql django orm django-rest-framework django-queryset


    【解决方案1】:

    对于这两个查询,您似乎希望获得至少有一个TransactionDetail 记录的TransactionMaster 记录,其中curent_status 等于TransactionMastertrans_status

    在 Django 中,这可能转化为:

    from django.db.models import F
    
    transaction_masters = TransactionMaster.objects.filter(transactiondetail__current_status=F('trans_status'))
    

    对于第一个查询,您似乎对TransactionMaster 记录的用户感兴趣?要获取用户,只需从过滤后的transaction_masters 中提取它们即可。

    users = [tm.user for tm in transaction_masters]
    

    【讨论】:

      猜你喜欢
      • 2014-12-11
      • 2020-07-31
      • 2017-08-10
      • 2015-07-13
      • 1970-01-01
      • 2015-06-23
      • 2019-03-22
      • 1970-01-01
      相关资源
      最近更新 更多