【发布时间】:2017-02-07 04:53:53
【问题描述】:
以下是我的 Django 程序的其中一个应用程序的简化 models.py:
#This is the custom queryset manager
class TenantManager(models.Manager):
def for_tenant(self, tenant):
return self.get_queryset().filter(tenant=tenant)
#This is one of the models:
class accountChart(models.Model):
name=models.CharField(max_length =200)
remarks=models.TextField(blank=True)
key=models.CharField(max_length=20)
tenant=models.ForeignKey(Tenant,related_name='accountchart_account_user_te nant')
objects = TenantManager()
#This is another data model, related ith FK to 1st model shown here
class paymentMode(models.Model):
name = models.TextField('Payment Mode Name')
payment_account=models.ForeignKey(accountChart,related_name='paymentMode_accountChart')
default=models.CharField('Default Payment Mode ?', max_length=3,choices=choice, default="No")
tenant=models.ForeignKey(Tenant,related_name='paymentmode_account_user_tenant')
objects = TenantManager()
现在,我正在根据用户输入执行以下查询集。但是,Django 正在抛出错误。请求您的帮助,因为这件事已经杀死了我超过 2 天。
#Queryset:
payment_mode=paymentMode.objects.for_tenant(request.user.tenant).get(name__exact=request.POST.get('payment_mode'))
payment_account=payment_mode.account
然而,Django 在查询集的第二行抛出错误。即使我使用过滤器而不是获取,它也显示错误 - 查询集没有过滤器!
据我了解,首先 django 为我提供了与该用户相关的所有支付模式,然后从 request.POST.get 对象获取支付模式,然后在第二行中它试图获取 相关外键。谁能告诉我哪里出错了?
【问题讨论】:
标签: django postgresql django-queryset django-orm django-database