AttributeError: объект 'ManyRelatedManager' не имеет атрибута 'log_order'

У меня есть следующие классы моделей с отношениями "многие ко многим", и я пытаюсь просмотреть запрос, чтобы найти совпадение в одном из полей log_order, но я продолжаю получать AttributeError: 'ManyRelatedManager' object has no attribute 'log_order':

Для лучшего представления вот модель:

class Log(models.Model):
    ...................................
    log_order = models.IntegerField(validators=[MinValueValidator(1)],blank=True, null=True)
    date = models.DateTimeField(...........)

class LogForm(forms.Form):
    .............................
    log_order = forms.IntegerField()

class ActiveSession(models.Model):
    log = models.ManyToManyField(Log)
    ..................................

В моих представлениях я пытаюсь получить данные в форме и сохранить их в модели журнала, которая в настоящее время работает нормально. Следующим моим шагом будет цикл через ActiveSession.log для проверки наличия log_order, чтобы просто обновить его вместо добавления нового журнала в сессию.

Вот мнения:

def addlog(request, id):
    url = request.META.get('HTTP_REFERER')  # get last url
    active_session = ActiveSession.objects.get(id=ActiveSession.objects.last().id)

    if request.method == 'POST':  # check post
        form = LogForm(request.POST)
        if form.is_valid():
            data = Log()
            data.log_order = request.POST.get('log_order')
            data.save()  # save data to table
            active_session.log.add(data)
            print('Log added to Session')
            # for i in active_session.log.log_order:
            #     print(i)
            #
            # for i in active_session.log.log_order.all():
            #     if data.log_order == i:
            #         print("Available in Active Session")
            #     else:
            #         active_session.log.add(data)
            #         print('log added in session')
            return HttpResponseRedirect(url)
    return HttpResponseRedirect(url)

Требуемый результат: Когда пост действителен и успешен, просмотреть журналы внутри активной сессии и если log_order доступен заменить существующий, если не доступен добавить.

Я прокомментировал свои пробы, так как они возвращали ошибки.

for i in active_session.log.all():
    if i.log_order == 1 // this is your data response:
        print(i)

Или вы можете использовать .values()

поэтому если вы используете:

for i in active_session.log.values() 

вы получаете набор queryset, в котором вы делаете свои if then вещи.

<QuerySet [{'id': 1, 'log_order': 1}]>
Вернуться на верх