我想把postgresql代码转换成Django的ORM查询。
描述:template = ['Guidelines', 'Widget_Details', 'Mapping_Template', 'Data_Upload']当我上传excel文件时,它在应用程序
中验证函数和更新。Postgres查询:
sqltcket = "select ticket_limit from "+dbNameQry+".dboard_computed_system_user_setting"
print('asdfghjqwertyuioplkmnbvcdfhjknbv',sqltcket)
sqltcket = sqltcket +" where user_id='"+user_id+"' and business_unit='"+bu+"'"
我已经尝试转换Django ORM:validateexcel.py:
sqltcket = DboardComputedSystemUserSetting.objects.filter(user_id = user_id, business_unit = bu).values_list('ticket_limit', flat = True)
models.py:
class DboardComputedSystemUserSetting(models.Model):
setting_id = models.AutoField(primary_key=True)
user_id = models.TextField(blank=True, null=True)
email_id = models.TextField(blank=True, null=True)
bu_registration_time = models.DateTimeField(blank=True, null=True)
is_admin = models.IntegerField(blank=True, null=True)
business_unit = models.TextField(blank=True, null=True)
buexpiry = models.TextField(blank=True, null=True)
ticket_limit = models.IntegerField(blank=True, null=True)
class Meta:
managed = True
db_table = 'dboard_computed_system_user_setting'
unique_together = (('setting_id', 'setting_id'))
错误:queryDB中的参数1必须是字符串或unicode对象:queryset
请大家帮帮我。
sqltcket = DboardComputedSystemUserSetting.objects.filter(user_id = user_id, business_unit = bu).values_list('ticket_limit', flat = True)
看起来您的user_id
变量是一个查询集而不是字符串
我想象您使用过滤器来获得像
这样的user_id
user_id = Users.objects.filter(id=random_variable)
返回一个查询集,它可以有0、1或多个用户,而不是字符串。
如果user_id确实是我假设的一个查询集。如果要按单个用户进行过滤,并且确定变量user_id
只有单个用户,则可以输入以下命令
DboardComputedSystemUserSetting.objects.filter(user_id = user_id.first().id, ... )...
如果出于某种原因你想按多个用户筛选,你可以使用
DboardComputedSystemUserSetting.objects.filter(user_id__in = user_id.values('id')... )...
你可以在Django中运行原始查询,但我不确定这是可取的https://docs.djangoproject.com/en/3.2/topics/db/sql/#performing-raw-queries