Добрый день жители форума.
Есть модель в admin.py для вывода инфы в админке
class SharePresentationSaleAdmin(admin.ModelAdmin):
# my_id_for_formfield = None
#
# def get_form(self, request, obj=None, **kwargs):
# if obj:
# self.count_register = self.num_register(obj)
# self.my_id_for_formfield = obj.id
# return super(SharePresentationSaleAdmin, self).get_form(request, obj, **kwargs)
#
# def get_queryset(self, request):
# qs = super(SharePresentationSaleAdmin, self).get_queryset(request)
# return qs.filter(num_users__gt=self.count_register)
list_display = ['campaign', 'created', 'user', 'active', 'last_parent', 'quantity', 'num_users',
'num_register']
search_fields = ['user__email', 'user__name']
readonly_fields = ('num_register',)
def num_register(self, obj):
return obj.sale_registrations.all().count()
все прекрасно выводится и отображается, вопрос в общем-то в чём , каким образом можно отфильтровать объекты изпользую параметр num_users модели и вычисляемый параметр num_register.
сама модель на всяк случай
class SharedPresentationSale(models.Model):
campaign = models.ForeignKey(Campaign, null=True, verbose_name='campaign_sales')
user = models.ForeignKey(settings.AUTH_USER_MODEL)
quantity = models.PositiveIntegerField(default=1, choices=[(i, i,) for i in range(11)],
verbose_name=_('Кол. пакетов'))
user_cost = models.FloatField(default=1)
num_users = models.IntegerField(default=0)
share_price = models.DecimalField(decimal_places=2, max_digits=16, default=0, verbose_name=_('Share price'))
created = models.DateTimeField(default=now)
time_end = models.DateTimeField(blank=True, null=True)
ordering = models.PositiveIntegerField(default=1)
transaction = models.OneToOneField(UserBalanceChange, blank=True, null=True)
active = models.BooleanField(default=True, verbose_name=_('Акт. пакета'))
last_parent = models.NullBooleanField(default=False, verbose_name=_('Флаг'), null=True)
def num_ordered(self):
return int(float(self.share_price) / self.user_cost) * self.quantity
def get_next_parent(self):
pass
def all_share_price(self):
return int(float(self.share_price)) * self.quantity
def num_register(self):
return self.sale_registrations.all().count()
все медоты, используются для работы уже непосредственно с объектом как я понимаю.
Спасибо за понимание.