models.py 915 B

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