Добрый день!
Имею модели:
class CallsPhoneBook(models.Model):
class Meta:
db_table = 'calls_phone_book'
verbose_name = 'Телефонная книга'
verbose_name_plural = 'Телефонная книга'
ordering = ['name']
id = models.AutoField('№', primary_key=True)
num = models.CharField('Номер', unique=True, max_length=64)
name = models.CharField('Имя', null=True, blank=True, max_length=255)
class CallsLog(models.Model):
class Meta:
db_table = 'calls_log'
verbose_name = 'Звонки'
verbose_name_plural = 'Звонки'
ordering = ['-date']
unique_together = ('date', 'ext', 'trk', 'fg')
id = models.AutoField('№', primary_key=True)
ext = models.ForeignKey(CallsExt, verbose_name='Внутренний номер')
auth = models.ForeignKey(CallsAuth, verbose_name='Код на межгород', null=True, blank=True)
trk = models.PositiveSmallIntegerField('trk')
date = models.DateTimeField('Дата')
duration = models.DurationField('Длит.')
dialed = models.ForeignKey(CallsPhoneBook, related_name='dialed', verbose_name='Номер')
Пытаюсь сделать фильтр в админке, но выдает совсем не те номера из Телефонной книги. Ходя id получаю верные. Где то не доработал с filter
class CallsPhoneBookAdmin(admin.ModelAdmin):
def get_queryset(self, request):
qs = super(CallsPhoneBookAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
auth_obj = CallsAuth.objects.get(subscriber=request.user)
log_obj = CallsLog.objects.filter(auth=auth_obj).order_by('dialed__id').values('dialed__id').annotate(cnt=Count('dialed'))
dialed = [log['dialed__id'] for log in log_obj]
return qs.filter(dialed__id__in=dialed)
В массиве
dialed = [15, 20, 24, 35, 42, 400, 408, 444, 508, 637, 668, 724, 739, 810, 1000, 1087, 1112, 1113, 1117, 1118
, 1167, 1170, 1171]
я получаю верные id номеров из телефонной книги на которые звонил абонент используя свой код авторизации. Но в результате получаю что попало.
Спасибо!
Updated 6 June 2017, 16:34 by SES.