from django.contrib import admin import os from django.utils.translation import ugettext_lazy as _ SETTING = os.environ['WORKOUTTEST_SETTING'] if SETTING == "PROD" : from aitrainer_backoffice.aitrainer_backoffice.models.customer import Customer from aitrainer_backoffice.aitrainer_backoffice.models.exercises import Exercises else: from aitrainer_backoffice.models.customer import Customer from aitrainer_backoffice.models.exercises import Exercises class FrequentCustomers(Customer): @property def exercise_count(self): count = Exercises.objects.filter(customer_id=self.customer_id).count() return count class Meta: proxy = True verbose_name = _("Frequent Customer") verbose_name_plural = _("Frequent Customers") class FrequentCustomersAdmin(admin.ModelAdmin): list_display = ('customer_id', 'name', 'firstname', 'email', 'exercise_count') #def get_queryset(self, request): # qs = super(FrequentCustomersAdmin, self).get_queryset(request) # select=["customer_id, name, firstname, email, ( select count(exercise_id) from exercises where exercises.customer_id = customer_customer.id) as exercise_count "], # group_by=["customer_id"], # having=["exercise_count > 10"], # order_by=["-exercise_count"] # ) # return qs.values("exercises").annotate(exercise_count=Count('exercises')).order_by('-exercise_count') # return Exercises.objects.annotate(count=Count("customer__customer_id")) # return qs.values('user').annotate(visit_sum=Count('visit_count')).order_by('-visit_sum') admin.site.register(FrequentCustomers, FrequentCustomersAdmin) admin.autodiscover()