Better admin listing
This commit is contained in:
parent
c9868beef8
commit
5748c7dc3a
|
@ -1,16 +1,26 @@
|
|||
from django.contrib import admin
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
import reversion
|
||||
from .models import Publisher, Series, Volume
|
||||
|
||||
|
||||
class PublisherAdmin(reversion.VersionAdmin):
|
||||
pass
|
||||
list_display = ['name', 'series_count']
|
||||
|
||||
def series_count(self, obj):
|
||||
return obj.series.count()
|
||||
series_count.short_description = _('Series')
|
||||
|
||||
admin.site.register(Publisher, PublisherAdmin)
|
||||
|
||||
|
||||
class SeriesAdmin(reversion.VersionAdmin):
|
||||
pass
|
||||
list_display = ['name', 'volumes_count']
|
||||
|
||||
def volumes_count(self, obj):
|
||||
return obj.volumes.distinct('number').count()
|
||||
volumes_count.short_description = _('Volumes')
|
||||
|
||||
|
||||
admin.site.register(Series, SeriesAdmin)
|
||||
|
||||
|
|
|
@ -7,6 +7,13 @@ from shelfzilla.models import ReviewModel
|
|||
class Publisher(ReviewModel):
|
||||
name = models.CharField(_('Name'), max_length=40)
|
||||
|
||||
def __unicode__(self):
|
||||
return u'{}'.format(self.name)
|
||||
|
||||
@property
|
||||
def series(self):
|
||||
return self.volumes.distinct('series')
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Publisher')
|
||||
verbose_name_plural = _('Publishers')
|
||||
|
@ -15,6 +22,13 @@ class Publisher(ReviewModel):
|
|||
class Series(ReviewModel):
|
||||
name = models.CharField(_('Name'), max_length=40)
|
||||
|
||||
def __unicode__(self):
|
||||
return u'{}'.format(self.name)
|
||||
|
||||
@property
|
||||
def publishers(self):
|
||||
return self.volumes.distinct('publisher')
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Series')
|
||||
verbose_name_plural = _('Series')
|
||||
|
@ -22,13 +36,16 @@ class Series(ReviewModel):
|
|||
|
||||
class Volume(ReviewModel):
|
||||
number = models.IntegerField(_('Number'))
|
||||
series = models.ForeignKey(Series)
|
||||
publisher = models.ForeignKey(Publisher)
|
||||
series = models.ForeignKey(Series, related_name="volumes")
|
||||
publisher = models.ForeignKey(Publisher, related_name="volumes")
|
||||
isbn_10 = models.CharField(
|
||||
_('ISBN-10'), max_length=10, blank=True, null=True)
|
||||
isbn_13 = models.CharField(
|
||||
_('ISBN-13'), max_length=13, blank=True, null=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return u'{} #{}'.format(self.series.name, self.number)
|
||||
|
||||
class Meta:
|
||||
verbose_name = _('Volume')
|
||||
verbose_name_plural = _('Volumes')
|
||||
|
|
Reference in New Issue