如果字段存在,则Django过滤查询集

Lak*_*har 5 django django-queryset django-filter

我想过滤我的查询集,当且仅当loan我的模型中存在ShgGroupLoanMarking.

class ShgGroupLoanMarking(models.Model):
 shg = models.ForeignKey(Shg, null=True)
 category = models.CharField(max_length=25, choices=GROUP_CATEGORY, default="shg_group")
 msss = models.ForeignKey(Msss, null=True)
 shgmember = models.ForeignKey(ShgMember, null=True)
 loan = models.ForeignKey(Loan, null=True)
 date_of_marking = models.DateField(null=True)
 paid = models.CharField(max_length=100, null=True)
 loan_amount = models.CharField(max_length=100, null=True)
 service_charge = models.CharField(max_length=100, null=True)
 description = models.CharField(max_length=100, null=True)
 status = models.CharField(max_length=100, null=True)
 print_status = models.BooleanField(default=False)
 sent_to_bank_status = models.BooleanField(default=False)
 receipt_number = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

这该怎么做?

knb*_*nbk 15

ShgGroupLoanMarking.objects.filter(loan__isnull=False)
Run Code Online (Sandbox Code Playgroud)

要么

ShgGroupLoanMarking.objects.exclude(loan=None)
Run Code Online (Sandbox Code Playgroud)

  • 这实际上并不测试字段是否存在,而是假设它存在并检查它是否为空。如果该字段真的不存在,这仍然会抛出一个 `jango.core.exceptions.FieldError: Cannot resolve keyword '....' into field.` (5认同)