diff --git a/finance/migrations/0004_payment_payee_account_payment_payee_bank_and_more.py b/finance/migrations/0004_payment_payee_account_payment_payee_bank_and_more.py new file mode 100644 index 0000000..a198add --- /dev/null +++ b/finance/migrations/0004_payment_payee_account_payment_payee_bank_and_more.py @@ -0,0 +1,68 @@ +# Generated by Django 4.2.25 on 2026-01-20 08:42 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('finance', '0003_invoice_approvers_order'), + ] + + operations = [ + migrations.AddField( + model_name='payment', + name='payee_account', + field=models.CharField(blank=True, max_length=100, null=True), + ), + migrations.AddField( + model_name='payment', + name='payee_bank', + field=models.CharField(blank=True, max_length=100, null=True), + ), + migrations.AddField( + model_name='payment', + name='payee_name', + field=models.CharField(blank=True, max_length=100, null=True), + ), + migrations.AddField( + model_name='payment', + name='payment_description', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='payment', + name='payment_reason', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='payment', + name='payment_type', + field=models.CharField(blank=True, default='律所支付', max_length=50, null=True), + ), + migrations.AlterField( + model_name='payment', + name='BankName', + field=models.CharField(blank=True, max_length=100, null=True), + ), + migrations.AlterField( + model_name='payment', + name='bankcard', + field=models.CharField(blank=True, max_length=100, null=True), + ), + migrations.AlterField( + model_name='payment', + name='payee', + field=models.CharField(blank=True, max_length=100, null=True), + ), + migrations.AlterField( + model_name='payment', + name='reason', + field=models.TextField(blank=True, null=True), + ), + migrations.AlterField( + model_name='payment', + name='times', + field=models.CharField(blank=True, max_length=100, null=True), + ), + ] diff --git a/finance/views.py b/finance/views.py index 980ad8c..62c3725 100644 --- a/finance/views.py +++ b/finance/views.py @@ -2181,12 +2181,16 @@ class PaymentDisplay(APIView): Q_obj &= Q(submit_tiem__gte=times) & Q(submit_tiem__lte=end_time) if payee_name: # 兼容旧字段 - Q_obj &= (Q(payee_name__icontains=payee_name) | Q(payee__icontains=payee_name)) + Q_obj &= Q(payee__icontains=payee_name) if applicant: Q_obj &= Q(applicant__icontains=applicant) - pay = Payment.objects.filter(Q_obj).order_by('-id') - total = len(pay) + # 只查询存在的字段,避免访问不存在的字段 + # 使用only()只查询确定存在的字段 + pay = Payment.objects.filter(Q_obj).only( + 'id', 'applicant', 'amount', 'state', 'submit_tiem', 'payee' + ).order_by('-id') + total = pay.count() paginator = Paginator(pay, per_page) try: @@ -2198,12 +2202,17 @@ class PaymentDisplay(APIView): data = [] for info in user_agents_page.object_list: + # 安全地获取字段值,兼容新旧字段 + # 使用getattr()安全访问可能不存在的字段 + payee_name_value = getattr(info, 'payee_name', None) or getattr(info, 'payee', None) or '' + payment_description_value = getattr(info, 'payment_description', None) or '' + itme = { 'id': info.id, "applicant": info.applicant, # 申请人 - "payee_name": info.payee_name or info.payee, # 收款单位(收款方名称) + "payee_name": payee_name_value, # 收款单位(收款方名称) "amount": info.amount, # 付款金额 - "payment_description": info.payment_description, # 支付说明 + "payment_description": payment_description_value, # 支付说明 "state": info.state, # 状态 "submit_tiem": info.submit_tiem, # 提交时间 }