Задать вопрос
Sergiy_Hanzhela
@Sergiy_Hanzhela
Начинающий разработчик!

Как отфильтровать объекты в админке Django?

Добрый день жители форума.
Есть модель в 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()

все медоты, используются для работы уже непосредственно с объектом как я понимаю.
Спасибо за понимание.
  • Вопрос задан
  • 267 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы