【发布时间】:2021-09-03 09:09:16
【问题描述】:
历史: 我一直在使用 GNUCash 进行会计,它存储所有客户信息,以便集成文件和发票的作业交付,我正在将 Postgres 上的 GNUCash 数据库与现有的本地服务器集成以发送和备份文件并自动标记它们。
所以我做了inspectdb> models.py 并从 gnucash 数据库中获取了所有模型。
现在 'Customers.objects.all()' 是工作文件并提供所有数据的列表,但 'Customers.objects.get()' 不起作用并给出错误。
查看:
def get_job_list(client_id):
try:
client = Customers.objects.get(id = client_id).using('gnucash')
print(client)
###job_list = Jobs.objects.get(owner_guid = client.guid,active = 0).using('gnucash')
except Exception as e:
job_list = None
return job_list
上述错误表明该表不存在客户。
但是当我将代码更改为Model.objects.all() 时,它工作正常。
查看:
def get_job_list(client_id):
try:
client = Customers.objects.all().using('gnucash') #This is Changed
print(client)
job_list = None
###job_list = Jobs.objects.get(owner_guid = client.guid,active = 0).using('gnucash')
except Exception as e:
job_list = None
return job_list
我查看了This question,它专注于小写表名,这对我来说是正确的.all() 工作但不是.get()。
如果你想看看,这里是模型:
class Customers(models.Model):
guid = models.CharField(primary_key=True, max_length=32)
name = models.CharField(max_length=2048)
id = models.CharField(max_length=2048)
notes = models.CharField(max_length=2048)
active = models.IntegerField()
.
.
.
class Meta:
managed = False
db_table = 'customers'
按照@boyenec 的建议在.get 中使用硬编码值:
def get_job_list(client_id):
try:
print("Getting Jobs List")
#client = Customers.objects.filter(id__in=[client_id]).using('gnucash')
client = Customers.objects.get(id = "CUS000001").using('gnucash')
#job_list = Jobs.objects.filter(owner_guid__in = [client[0].guid],active__in = [1]).using('gnucash')
except Exception as e:
print("Oh No Error !")
print(e)
job_list = None
return job_list
在管理站点注册的应用 ERP: 更新:不要使用此检查解决问题的答案
我开始使用
client = Customers.objects.filter(id__in=[client_id]).using('gnucash')进行查询,因为除了Model.objects.get()之外的一切似乎都可以正常工作
【问题讨论】:
-
\dt在psql中返回的数据库中表的名称是什么? -
@AdrianKlaver 我从 pgAdmin 添加了一张图片。表名是小写的“客户”
标签: python django postgresql django-models