Как использовать значение из запроса в другом запросе в django
В моем представлении есть следующий код:
# default group view for group admins
def adminGroupView(request):
# get group id => group data and messages
group_id = GroupUser.objects.get(username_id=request.user.id)
groupdata = Group.objects.get(group_id=group_id)
groupmessages = MessageBoard.objects.filter(group_id=group_id)
groupmembers = GroupUser.objects.filter(group_id=group_id)
form = SendMessageForm()
context = {
"groupdata":groupdata,
"groupmessages":groupmessages,
"groupmembers":groupmembers,
"form":form
}
return render(request, 'base/group-admin.html', context)
Я продолжаю получать ошибку типа
TypeError at /group/ Поле 'group_id' ожидало число, но получило <GroupUser: 9>.
Когда я заменяю group_id на число, код работает нормально. Как мне использовать значение из другого запроса.
модель
class Group(models.Model):
group_id = models.AutoField(primary_key=True)
group_name = models.CharField(max_length=30)
date_created = models.DateField(auto_now_add=True)
created_by = models.CharField(max_length=30)
updated = models.DateField(auto_now=True)
def __str__(self):
return str(self.group_id)
class GroupUser(models.Model):
group_id = models.ForeignKey('Group', on_delete=models.CASCADE)
username = models.ForeignKey(User, on_delete=models.CASCADE)
date_joined = models.DateTimeField(auto_now_add=True)
def __str__(self):
return str(self.group_id)
Метод model.get()
может вернуть только 1 объект, безопасно обращаться к атрибуту именно там. Если найдено 0 или более 1 объекта, этот метод выдаст ошибку. См. здесь
Поскольку ваше поле group_id
является ссылкой (foreign key
) на Group
, вы можете просто получить группу, вызвав:
group = GroupUser.objects.get(username_id=request.user.id).group_id
В приведенном выше запросе вы получаете связанный объект типа Group
. Чтобы получить конкретно group_id, вы можете сделать следующее:
group_id = GroupUser.objects.get(username_id=request.user.id).group_id.group_id