admin.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. from django.contrib import admin
  2. from .models import Cost, Good, Service, CostUse, GoodUse, Document
  3. @admin.register(Document)
  4. class DocumentAdmin(admin.ModelAdmin):
  5. list_display = ('name', 'date', 'type')
  6. class GoodUseInline(admin.TabularInline):
  7. model = GoodUse
  8. extra = 1
  9. class CostUseInline(admin.TabularInline):
  10. model = CostUse
  11. extra = 1
  12. class DirectDocumentFilter(admin.SimpleListFilter):
  13. title = 'Document'
  14. parameter_name = 'document'
  15. def queryset(self, request, queryset):
  16. document = self.value()
  17. if not document:
  18. return queryset
  19. else:
  20. return queryset.filter(document=document)
  21. def lookups(self, request, model_admin):
  22. for i in Document.objects.all():
  23. yield i.pk, str(i)
  24. @admin.register(Cost)
  25. class CostAdmin(admin.ModelAdmin):
  26. list_display = ('name', 'price', 'document')
  27. list_filter = [DirectDocumentFilter]
  28. @admin.register(Good)
  29. class GoodAdmin(admin.ModelAdmin):
  30. list_display = (
  31. '__str__', 'price', 'document',
  32. 'provisioning_duration', 'monthly_provision')
  33. list_filter = [DirectDocumentFilter]
  34. @admin.register(Service)
  35. class ServiceAdmin(admin.ModelAdmin):
  36. list_display = ('name', 'subscriptions_count', 'document')
  37. inlines = (CostUseInline, GoodUseInline)
  38. list_filter = [DirectDocumentFilter]