Добавление фильтра в модуль Django

Я работаю в проекте Django. Я создал модель для сохранения последних 50 ошибок, которые произошли.

models.py

class Error(models.Model):
    ERROR_TYPE_CHOICES = [
        ('ERROR', 'ERROR'),
        ('WARNING', 'WARNING'),
    ]
    user_mail = models.CharField(max_length=500, blank=True, null=True)
    error_type = models.CharField(max_length=7, choices=ERROR_TYPE_CHOICES)
    error_message = models.CharField(max_length=1000, blank=True, null=True)
    error_message_detail = models.CharField(max_length=500, blank=True, null=True)
    created_at = models.DateTimeField(default=timezone.now)

    # Static field for maximum errors limit
    max_errors = 50

    def __str__(self):
        return f"{self.error_type}: {self.error_message}"

    class Meta:
        ordering = ['-created_at']  # Order by descending creation date

    @classmethod
    def check_and_trim(cls):
        # # Obtain all errors ordered by creation date
        errors = cls.objects.all().order_by('-created_at')
        # If there are more than 50 errors, delete the older ones
        if errors.count() > cls.max_errors:
            errors_to_delete = errors[cls.max_errors:]
            for error in errors_to_delete:
                error.delete()

admin.py

class ErrorAdmin(admin.ModelAdmin):
    list_display = ('user_mail', 'error_type', 'error_message', 'error_message_detail', 'created_at')

admin.site.register(Error, ErrorAdmin)

Как видите, если ошибок больше 50, самая старая стирается, чтобы можно было сохранить новую.

В будущем, возможно, потребуется сохранять более 50 ошибок, поэтому вместо изменения кода я хотел бы добавить функцию сейчас, чтобы в localhost:8000/admin/Error вы могли ввести, сколько ошибок вы хотите сохранить.

Here you can see what I want to do

Вы не можете сделать это здесь, и эта обработка просматривает записи в базе данных и, по вашим словам, вы удаляете самые старые, чтобы поместить новую ошибку, так что у вас нет более 50 записей.

Это должно быть сохранено в вашем файле настроек, а чтобы сотрудники могли его изменить, используйте пакет django-constance для управления этим.

На заметку: Sentry будет намного лучше в этом, и он дает много информации о запросе и переменных. Кроме того, вы можете размещать данные самостоятельно (бесплатно), если не хотите отправлять данные пользователей за пределы своей инфраструктуры.

Вернуться на верх