以下是我的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()
现在,我正在根据用户inout执行以下查询集。然而,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在第二行查询集中抛出了错误。即使我使用filter而不是get,它的显示错误 - Queryset也没有过滤器!!
据我所知,首先django给了我与该用户相关的所有支付模式,然后从request.POST.get对象获取支付模式,然后在第二行中尝试获取 相关的外键。任何人都可以告诉我哪里出错了吗?
答案 0 :(得分:1)
嗯,很抱歉打扰你们所有人,我得到了答案,因为Queryset中有一个拼写错误。
应该如此,一旦我使用"得到"解决方案很好。现在,我不确定除了缓存会话数据之外,还有更好的方法吗?
这是我写的答案,供将来参考。