在我的数据库中,我有一个100的report_id,但它有两个与report_id无关的部分,与我的应用程序无关。我可以在下面的例子中使用.distinct()。这在某一点上很有效。
在下面的示例中,我的数据在我的表单中正确返回,但是我需要使用第一个示例中不存在的ID来发布数据。
reportaccess = QvReportList.objects.filter(report_id__in= reportIds).values_list('report_name_sc', flat = True).distinct()
我必须将查询集更改为以下内容,以允许report_id POST到下一个视图。
currreportaccess = QvReportList.objects.filter(report_id__in= reportIds).distinct()
我的问题是因为我不再将values_list与单个字段作为平面。它以两行的形式回归。
我的HTML定义如下:
{% for app in currreportaccess %}
<li> <input type="checkbox" name="current_report" value ="{{app.report_id}}" > {{ app.report_name_sc }}</li>
{% endfor %}
在这种情况下是否有可能获得明显的结果?如果是这样,我应该怎么做呢?
我已经为表QVReportList添加了我的模型。
class QvReportList(models.Model):
qv_dept_id = models.CharField(db_column='QV_Dept_ID', max_length=100) # Field name made lowercase.
report_id = models.CharField(db_column='Report_ID',primary_key=True, max_length = 100, serialize=False) # Field name made lowercase.
report_name = models.CharField(db_column='Report_Name', max_length=255, blank=True, null=True) # Field name made lowercase.
report_name_sc = models.CharField(db_column='Report_Name_SC', max_length=255, blank=True, null=True) # Field name made lowercase.
qv_filename = models.CharField(db_column='QV_FileName', max_length=255, blank=True, null=True) # Field name made lowercase.
report_access = models.CharField(db_column='Report_Access', max_length=20, blank=True, null=True) # Field name made lowercase.
report_group_id = models.IntegerField(db_column='Report_Group_ID', blank=True, null=True) # Field name made lowercase.
report_sub_group_id = models.IntegerField(db_column='Report_Sub_Group_ID', blank=True, null=True) # Field name made lowercase.
load_date = models.DateTimeField(db_column='Load_Date', blank=True, null=True) # Field name made lowercase.
approver_fname = models.CharField(db_column='Approver_FName', max_length=255, blank=True, null=True) # Field name made lowercase.
approver_lname = models.CharField(db_column='Approver_LName', max_length=255, blank=True, null=True) # Field name made lowercase.
approver_ntname = models.CharField(db_column='Approver_NTName', max_length=255, blank=True, null=True) # Field name made lowercase.
beg_date = models.DateTimeField(db_column='Beg_Date', blank=True, null=True) # Field name made lowercase.
end_date = models.DateTimeField(db_column='End_Date', blank=True, null=True) # Field name made lowercase.
active = models.IntegerField(db_column='Active', blank=True, null=True) # Field name made lowercase.
approval_id = models.IntegerField(db_column='Approval_ID', blank=True, null=True) # Field name made lowercase.
role_based_id = models.IntegerField(db_column='Role_Based_ID', blank=True, null=True) # Field name made lowercase.
class Meta:
managed = False
db_table = 'QV_Report_List'
问题在于报告ID为100的字段report_access,report_access有一个SUMMARY和Patient值。
我不能只在字段名称上调用distinct,因为我需要使用SQL服务器而不能切换到posgress。我收到以下错误消息。
DISTINCT ON fields is not supported by this database backend
答案 0 :(得分:1)
你可以使用.values()的.values(),如下所示:
QvReportList.objects.filter(
report_id__in= reportIds
).values('report_id', 'report_name_sc'
).distinct()
values()返回dict(或类似的东西),在你的模板中,你可以像写完一样。