Python django组合两个查询集并将其调用为html
我在views.py中有这个queryset,我正在使用union来组合这两个queryset,我如何使用另一个模型(sql中的内部联接)组合这两个queryset并将其调用到html?请检查我特别提供的温度Python django组合两个查询集并将其调用为html,python,django,Python,Django,我在views.py中有这个queryset,我正在使用union来组合这两个queryset,我如何使用另一个模型(sql中的内部联接)组合这两个queryset并将其调用到html?请检查我特别提供的温度 company = FmCustomerUsers.objects.filter(user=request.user.id) employee = FmCustomerEmployeeSupplier.objects.filter( fmCustomerID__compan
company = FmCustomerUsers.objects.filter(user=request.user.id)
employee = FmCustomerEmployeeSupplier.objects.filter(
fmCustomerID__company_name__in=company.values_list('fmCustomerID__company_name'))
feedback = TrEmployeeSuppliersFeedbackQuestionsSubmittedRecords.objects.filter(
fmCustomerID__company_name__in=company.values_list('fmCustomerID__company_name')).filter(
fmCustomerEmployeeSupplierID__in=employee.values_list('id')).union(TrCustomerEmployeeSupplierSubmittedRecords.objects.filter(
fmCustomerID__company_name__in=company.values_list('fmCustomerID__company_name')))
这是我的模特
class FmCustomerEmployeeSupplier(models.Model):
fmCustomerID = models.ForeignKey('FmCustomer', on_delete=models.SET_NULL, null=True, blank=True,verbose_name="Customer")
fmCustomerLocationID = models.ForeignKey('FmCustomerLocation', on_delete=models.SET_NULL, null=True, blank=True,verbose_name="CustomerLocation")
dateSubmitted = models.DateField(auto_now_add=True, null=True, blank=True)
lastname = models.CharField(max_length=500, blank=True, null=True)
firstname = models.CharField(max_length=500, blank=True, null=True)
middleInitial = models.CharField(max_length=500, blank=True, null=True)
bodyTemperature = models.FloatField()
fmCustomerSectionID = models.ForeignKey('FmCustomerSection', on_delete=models.SET_NULL, null=True, blank=True, verbose_name="CustomerSection")
contact_number = models.CharField(max_length=500, blank=True, null=True)
employee_number = models.CharField(max_length=500, blank=True, null=True)
address = models.CharField(max_length=500, blank=True, null=True)
email = models.CharField(max_length=500, blank=True, null=True)
class TrCustomerEmployeeSupplierSubmittedRecords(models.Model):
fmCustomerID = models.ForeignKey('FmCustomer',on_delete=models.SET_NULL, null=True, blank=True,verbose_name="Customer")
fmCustomerLocationID = models.ForeignKey('FmCustomerLocation', on_delete=models.SET_NULL, null=True, blank=True,verbose_name="CustomerLocation")
dateSubmitted = models.DateField(null=True, blank=True)
firstname = models.CharField(max_length=500, blank=True)
middleInitial = models.CharField(max_length=500, blank=True)
lastname = models.CharField(max_length=500, blank=True)
bodyTemperature = models.FloatField()
fmCustomerSectionID = models.ForeignKey('FmCustomerSection', on_delete=models.SET_NULL, null=True, blank=True,verbose_name="CustomerSection")
employee_number = models.CharField(max_length=500, blank=True, null=True)
contactNumber = models.CharField(max_length=500, blank=True, null=True)
address = models.CharField(max_length=500, blank=True, null=True)
email = models.CharField(max_length=500, blank=True, null=True)
class TrEmployeeSuppliersFeedbackQuestionsSubmittedRecords(models.Model):
fmCustomerEmployeeSupplierID = models.ForeignKey('FmCustomerEmployeeSupplier',on_delete=models.SET_NULL, null=True, blank=True,
verbose_name="CustomerEmployeeSupplier")
fmCustomerID = models.ForeignKey('FmCustomer',on_delete=models.SET_NULL, null=True, blank=True,verbose_name="Customer")
dateSubmitted = models.DateField(auto_now_add=True, null=True, blank=True)
q1Answer = models.CharField(max_length=500, blank=True, null=True)
q2Answer = models.CharField(max_length=500, blank=True, null=True)
q2AnswerDetailed = models.CharField(max_length=500, blank=True, null=True)
q3Answer = models.CharField(max_length=500, blank=True, null=True)
q4Answer = models.CharField(max_length=500, blank=True, null=True)
q4AnswerDetailed = models.CharField(max_length=500, blank=True, null=True)
q5Answer = models.CharField(max_length=500, blank=True, null=True)
q5Ubo = models.BooleanField(default=False, blank=True, null=True)
q5Lagnat = models.BooleanField(default=False, blank=True, null=True)
q5Sipon = models.BooleanField(default=False, blank=True, null=True)
q5LBM = models.BooleanField(default=False, blank=True, null=True)
q5HirapSaPaghinga = models.BooleanField(default=False, blank=True, null=True)
q5PananakitngUlo = models.BooleanField(default=False, blank=True, null=True)
q5PananakitngKatawan = models.BooleanField(default=False, blank=True, null=True)
q5PagkawalaNgPangAmoyatPanlasa = models.BooleanField(default=False, blank=True, null=True)
q6visitedPlacesDuringNonWorkingDays = models.CharField(max_length=500, blank=True, null=True)
这是我的html
{% for feedback in feedbacks %}
<tr>
<td> {{feedback.id}} </td>
<td> {{feedback.inputdate}} </td>
<td> {{feedback.fmCustomerEmployeeSupplierID.firstname}} {{feedback.fmCustomerEmployeeSupplierID.middleInitial}} {{feedback.fmCustomerEmployeeSupplierID.lastname}}</td>
<td> {{feedback.fmCustomerEmployeeSupplierID.fmCustomerLocationID}} </td>
<td> {{feedback.fmCustomerID.fmCustomerLocationID}} </td>
<td> {{feedback.fmCustomerEmployeeSupplierID.contactNumber}} </td>
<td> {{feedback.fmCustomerID.section}} </td>
<td> {{feedback.fmCustomerEmployeeSupplierID.bodyTemperature}} </td> ====> this td is for model `TrCustomerEmployeeSupplierSubmittedRecords`
<td>{{feedback.q1Answer}}</td>
</tr>
不能有两个行数不相同的查询的并集 您正在尝试建立以下联盟:
- t员工供应商反馈问题提交记录(19行)
- TrCustomerEmployeeSupplierSubmittedRecords(12行)
我所能告诉你的是,你应该只选择你需要在你的最终查询中得到的字段,以便在查询的两边有相同数量的字段。可能使用值列表或仅使用queryset方法。这并不复杂,错误是不言自明的:
每个联合查询必须具有相同的列数
您的代码非常混乱,以至于您没有看到它:
TrCustomerEmployeeSupplierSubmittedRecords
和tremployeeSuppliers反馈问题SubmittedRecords
不同
看看这个:
FmCustomerEmployeeSupplier中的联系电话
TrCustomerEmployeeSupplierSubmittedRecords
您的代码应该是:
companys\u name=FmCustomerUsers.objects.filter(
user=request.user.id
).values\u list('fmCustomerID\u公司名称')
employees\u id=fmcustomereemployeesupplier.objects.filter(
fmCustomerID\uuuu company\u name\uuuuu in=companys\u name
).values\u列表(“id”)
员工反馈=t员工供应商反馈问题提交记录.objects.filter(
fmCustomerID\uuuu company\u name\uuuuu in=companys\u name,
fmCustomerEmployeeSupplierID\uuuu in=员工id
)
客户反馈=TrCustomerEmployeeSupplierSubmittedRecords.objects.filter(
fmCustomerID\uuuu company\u name\uuuuu in=companys\u name,
fmCustomerEmployeeSupplierID\uuuu in=员工id
)
反馈=员工反馈。工会(客户反馈)
您只需在employees\u feedback
和customers\u feedback
上添加一个values\u列表
,并使用所需的相同字段
您需要遵循PEP8,因为很难读懂您的意思您能提供一个例子吗?im my modelTremployeeSuppliers反馈问题提交记录
我没有fmCustomerEmployeeSupplierID
字段每个联合查询必须具有相同的列数第1行:…=U2。“id”)其中U0。“用户id”=2)联合(选择“追踪…所以,你们不能做你们想做的事,概念问题而不是代码问题(创建抽象模型将在这里帮助你们)有没有办法在不创建抽象模型的情况下得到我想要的?说实话,你所有的代码都写得不好,重新开始,合理化它。FmCustomerEmployeeSupplier
和TrCustomerEmployeeSupplierSubmittedRecords
都是一样的,没有意义,因为你想要TrCustomerEmployeeSupplierSubmittedRecords
s
和t员工供应商反馈问题提交记录
相同
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py" in _execute
84. return self.cursor.execute(sql, params)
The above exception (each UNION query must have the same number of columns
LINE 1: ...U2."id") WHERE U0."user_id" = 2)))) UNION (SELECT "TracingAp...
^
) was the direct cause of the following exception:
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\exception.py" in inner
34. response = get_response(request)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response
115. response = self.process_exception_by_middleware(e, request)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py" in _get_response
113. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\User\Desktop\ContractTracingProject\TracingSettings\TracingApp\views.py" in report1
1169. return render(request, "TracingApp/report1.html", {"feedbacks": feedback})
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\shortcuts.py" in render
36. content = loader.render_to_string(template_name, context, request, using=using)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\loader.py" in render_to_string
62. return template.render(context, request)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\backends\django.py" in render
61. return self.template.render(context)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render
171. return self._render(context)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in _render
163. return self.nodelist.render(context)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render
937. bit = node.render_annotated(context)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\base.py" in render_annotated
904. return self.render(context)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\template\defaulttags.py" in render
166. len_values = len(values)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\query.py" in __len__
256. self._fetch_all()
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\query.py" in _fetch_all
1242. self._result_cache = list(self._iterable_class(self))
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\query.py" in __iter__
55. results = compiler.execute_sql(chunked_fetch=self.chunked_fetch, chunk_size=self.chunk_size)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql
1100. cursor.execute(sql, params)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py" in execute
99. return super().execute(sql, params)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py" in execute
67. return self._execute_with_wrappers(sql, params, many=False, executor=self._execute)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py" in _execute_with_wrappers
76. return executor(sql, params, many, context)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py" in _execute
84. return self.cursor.execute(sql, params)
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\utils.py" in __exit__
89. raise dj_exc_value.with_traceback(traceback) from exc_value
File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\db\backends\utils.py" in _execute
84. return self.cursor.execute(sql, params)
Exception Type: ProgrammingError at /report1/
Exception Value: each UNION query must have the same number of columns
LINE 1: ...U2."id") WHERE U0."user_id" = 2)))) UNION (SELECT "TracingAp...
^