簡體   English   中英

獲取相關對象列表-Django Queryset

[英]Get List of related objects - Django Queryset

如何使用django的queryset從MyUser表中獲取用戶列表,其中UserBankTransaction表中的transaction_paid為False?

class UserBankTransaction(models.Model):
    user = models.ForeignKey(MyUser)
    plaid_transaction_id = models.CharField(max_length=300, unique=True)
    charge_amount = models.DecimalField(max_digits=10, decimal_places=2)
    account_id = models.CharField(max_length=300)
    location_name = models.CharField(blank=True, max_length=300)
    roundup_amount = models.DecimalField(max_digits=10, decimal_places=2, null=True)
    transaction_date = models.DateField()
    transaction_paid = models.BooleanField(default=False)
    created_date = models.DateTimeField(auto_now=False, auto_now_add=True)


class MyUser(AbstractBaseUser):
    username = models.CharField(max_length=255,unique=True,)
    email = models.EmailField(verbose_name='email address',max_length=255,unique=True)
    first_name = models.CharField(max_length=120,null=True,blank=True,)
    last_name = models.CharField(max_length=120,null=True, blank=True,)
    created = models.DateTimeField(auto_now_add=True, null=True, blank=True)
    updated = models.DateTimeField(auto_now=True, null=True, blank=True)

使用向后關系查詢將執行以下操作:

MyUser.objects.filter(userbanktransaction_set__transaction_paid=False)

如果要檢索用戶ID列表:

UserBankTransaction.objects \
    .filter(transaction_paid=False)\
    .values_list('user', flat=True)

如果要檢索用戶對象列表:

MyUser.objects.filter(userbanktransaction_set__transaction_paid=False)

或者你可以指定一個related_nameUserBankTransaction.user

class UserBankTransaction(models.Model):
    user = models.ForeignKey(MyUser, related_name='bank_transactions') 

那么您只需執行以下操作:

MyUser.objects.filter(bank_transactions__transaction_paid=False)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM