Настройка панели администратора Django, собственный метод создания ваучера на оплату обучения в панели администратора сиPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Настройка панели администратора Django, собственный метод создания ваучера на оплату обучения в панели администратора си

Сообщение Anonymous »


@admin.register(Студент) класс StudentAdmin(admin.ModelAdmin):

actions = ['generate_fee_vouchers',]

def ignore_fee_vouchers(self, request, queryset): правило = VoucherGenerationRule.objects.latest('создано') пытаться: с транзакцией.atomic(): для студента в наборе запросов: если Student.student_status не в ["LEFT", "FREEZE"]: если студент.student_fee_structure: плата_структура = студент.студент_плата_структура

# Генерируем номер ваучера на основе вашей логики номер_ваучера = номер студента.roll_no + str(правило.issue_date.year)[-2:] + str( rule.issue_date.month).zfill(2) общая_плата = ( плата_структура.всего + студент.задолженность + правило.дополнительные_заряды + плата_структура.штраф) - студент.адванс # Попробуйте получить существующий ваучер для студента с тем же номером ваучера total_fee_after_due_date = total_fee + rule.late_pay_fine Student_fee_voucher = StudentFeeVoucher.objects.filter( номер_ваучера=номер_ваучера, студент=студент, плата_структура=плата_структура ).первый() если Student_fee_voucher: # # Если ваучер уже существует, обновите его атрибуты voucher_url = обратный('admin:student_management_studentfeevoucher_change', args=[student_fee_voucher.id]) Student_fee_voucher.due_date = rule.due_date Student_fee_voucher.issue_date = rule.issue_date Student_fee_voucher.arrears = студент.задолженность Student_fee_voucher.advance = Student.advance Student_fee_voucher.tuition_fee = плата_структура.tuition_fee Student_fee_voucher.dev_fund =fee_structure.development_fund Student_fee_voucher.misc_fee = плата_структура.misc Student_fee_voucher.late_pay_fine = rule.late_pay_fine Student_fee_voucher.extra_charges = rule.extra_charges Student_fee_voucher.extra_charges_note = rule.extra_charges_note # Устанавливаем рассчитанную сумму total_fee Student_fee_voucher.total_fee = int(total_fee) Student_fee_voucher.total_fee_after_due_date = int(total_fee_after_due_date) Student_fee_voucher.save() сообщение = mark_safe( f"Обновлен ваучер на оплату до рупий{student_fee_voucher.total_fee:,}/- для {student.student_name ({student.roll_no}, {student.student_section}) уже существует Просмотреть ваучер .") messages.warning(запрос, сообщение) еще: # Если ваучер не найден, создайте новый Student_fee_voucher = StudentFeeVoucher.objects.create( номер_ваучера=номер_ваучера, студент=студент, плата_структура=плата_структура, Due_date=правило.Due_date, Issue_date=rule.issue_date, задолженность = студент.задолженность, заранее = студент.advance, tuition_fee=fee_structure.tuition_fee, dev_fund=fee_structure.development_fund, misc_fee=fee_structure.misc, late_pay_fine=rule.late_paid_fine, extra_charges=rule.extra_charges, extra_charges_note=rule.extra_charges_note, total_fee=int(total_fee), total_fee_after_due_date=int(total_fee_after_due_date) ) Student_fee_voucher.save() voucher_url = обратный('admin:student_management_studentfeevoucher_change', args=[student_fee_voucher.id]) сообщение = mark_safe( f"Ваучер на оплату успешно создан для {student.student_name " f"({student.roll_no}, {student.student_section}). Общая сумма: рупий {total_fee}/-. " f"Просмотреть ваучер.") messages.success(запрос, сообщение) еще: messages.warning(запрос, f"Для {student.student_name} не определена структура оплаты.") еще: messages.warning(запрос, f"Не удалось обработать структуру оплаты для {student.student_name} ({student.student_status}).") кроме исключения как e: self.message_user(request, f «Ошибка создания/обновления ваучеров на оплату: {e}») generate_fee_vouchers.short_description = "Создать/обновить ваучеры на оплату для выбранных студентов" Это работает! просто пытаюсь помочь сообществу Django.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»