将postgresql中的查询转换为Django orm



我想把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

最新更新