Индекс списка вне диапазона в модели Django

Я следую серии уроков, чтобы выучить Джанго. Модель Джанго была сделана как таковая

class PositionMatchManager(models.Manager):
    def update_top_suggestions(self, user, match_int):
        matches = Match.objects.get_matches(user)[:match_int]
        for match in matches:
            job_set = match[0].userjob_set.all()
            if job_set.count > 0:
                for job in job_set:
                    try:
                        the_job = Job.objects.get(text__iexact=job.position)
                        jobmatch, created = self.get_or_create(user=user, job=the_job)
                    except:
                        pass
                    try:
                        the_loc = Location.objects.get(name__iexact=job.location)
                        locmatch, created = LocationMatch.objects.get_or_create(user=user, location=the_loc)
                    except:
                        pass
                    try:
                        the_employer = Employer.objects.get(name__iexact=job.employer_name)
                        empymatch, created = EmployerMatch.objects.get_or_create(user=user, employer=the_employer)
                    except:
                        pass



class PositionMatch(models.Model):
    user = models.ForeignKey(User)
    job = models.ForeignKey(Job)
    hidden = models.BooleanField(default=False)
    liked = models.NullBooleanField()
    updated = models.DateTimeField(auto_now=True, auto_now_add=False)

    def __unicode__(self): #__str__(self):
        return self.job.text

    objects = PositionMatchManager()

    def check_update(self, match_int):
        now = timezone.now()
        offset = now - datetime.timedelta(seconds=12)  # 12 hours ago
        if self.updated <= offset:
            PositionMatch.objects.update_top_suggestions(self.user, match_int) 



class EmployerMatch(models.Model):
    user = models.ForeignKey(User)
    employer = models.ForeignKey(Employer)
    hidden = models.BooleanField(default=False)
    liked = models.NullBooleanField()

    def __unicode__(self): #__str__(self):
        return self.user.username



class LocationMatch(models.Model):
    user = models.ForeignKey(User)
    location = models.ForeignKey(Location)
    hidden = models.BooleanField(default=False)
    liked = models.NullBooleanField()


    def __unicode__(self): #__str__(self):
        return self.user.username

и views.py как таковой

if request.user.is_authenticated():

        #PositionMatch.objects.update_top_suggestions(request.user, 20)
        matches = Match.objects.get_matches_with_percent(request.user)[:6]
        positions = PositionMatch.objects.filter(user=request.user)[:6]

        if positions.count > 0:
            positions[0].check_update(20) #20 matches total
        locations = LocationMatch.objects.filter(user=request.user)[:6]
        employers = EmployerMatch.objects.filter(user=request.user)[:6]


        queryset = Question.objects.all().order_by('-timestamp') 
        context = {
            "queryset": queryset,
            "matches": matches,
            "positions": positions,
            "locations": locations,
            "employers": employers
        }
        return render(request, "questions/home.html", context)

    return render(request, "home.html", context)

Код работает абсолютно правильно в учебнике. Но я получаю IndexError at / list index out of range ошибка. в позициях [0].check_update(20) в представлениях. У меня есть 4 соответствия работ в моем администраторе, и когда я изменяю check_update(4), он запускается, но для одного пользователя. Но в учебнике у администратора также есть 5 соответствий заданий, но оно работает без ошибок. Могу ли я получить предложение.

0 ответов

Другие вопросы по тегам