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}]>