from django.contrib import admin from .models import Song from django import forms class SongAdminForm(forms.ModelForm): class Meta: model = Song fields = ['song_title', 'release_year', 'duration'] def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) # Dodaj placeholder do pola duration self.fields['duration'].widget.attrs['placeholder'] = 'HH:MM:SS' # Dodaj placeholder do pola rok self.fields['release_year'].widget.attrs['placeholder'] = 'Wprowadź rok wydania' def clean_release_year(self): release_year = self.cleaned_data['release_year'] if release_year and (len(str(release_year)) != 4 or not release_year.isdigit()): raise forms.ValidationError('Rok wydania musi składać się z dokładnie czterech cyfr.') return release_year def clean_duration(self): duration = self.cleaned_data['duration'] # Sprawdzamy, czy duration ma poprawny format (HH:MM:SS) if duration.total_seconds() < 0: raise forms.ValidationError('Niewłaściwy format czasu. Użyj wartości nieujemnej.') # Sprawdzamy, czy duration nie przekracza 01:59:59 if duration.total_seconds() > 7199: raise forms.ValidationError('Maksymalna długość to 1 godzina, 59 minut i 59 sekund.') return duration @admin.register(Song) class SongAdmin(admin.ModelAdmin): form = SongAdminForm list_display = ('song_title', 'release_year', 'duration', 'created_at') list_filter = ('release_year',) search_fields = ('song_title',) readonly_fields = ['created_at']