1. from django.contrib import admin
    
  2. from django.db import models
    
  3. 
    
  4. 
    
  5. class Band(models.Model):
    
  6.     name = models.CharField(max_length=100)
    
  7.     bio = models.TextField()
    
  8.     rank = models.IntegerField()
    
  9. 
    
  10.     class Meta:
    
  11.         ordering = ("name",)
    
  12. 
    
  13. 
    
  14. class Song(models.Model):
    
  15.     band = models.ForeignKey(Band, models.CASCADE)
    
  16.     name = models.CharField(max_length=100)
    
  17.     duration = models.IntegerField()
    
  18.     other_interpreters = models.ManyToManyField(Band, related_name="covers")
    
  19. 
    
  20.     class Meta:
    
  21.         ordering = ("name",)
    
  22. 
    
  23. 
    
  24. class SongInlineDefaultOrdering(admin.StackedInline):
    
  25.     model = Song
    
  26. 
    
  27. 
    
  28. class SongInlineNewOrdering(admin.StackedInline):
    
  29.     model = Song
    
  30.     ordering = ("duration",)
    
  31. 
    
  32. 
    
  33. class DynOrderingBandAdmin(admin.ModelAdmin):
    
  34.     def get_ordering(self, request):
    
  35.         if request.user.is_superuser:
    
  36.             return ["rank"]
    
  37.         else:
    
  38.             return ["name"]