У меня есть следующие модели:
class STUser(AbstractBaseUser):
email = models.EmailField(unique=True)
name = models.CharField(max_length=255)
...
class VenuePermissions(models.Model):
user = models.ForeignKey(STUser, on_delete=models.CASCADE)
venue = models.ForeignKey(Venue, on_delete=models.CASCADE, blank=True, null=True)
...
class Venue(models.Model):
name = models.CharField(max_length=100)
description = models.CharField(max_length=1500, null=True, blank=True)
...
Затем я предварительно извлекаю связанные venuepermission
объекты в STUser
объект в представлении
class VenueUserList(APIView):
def get(self, request, *args, **kwargs):
objects = STUser.objects.prefetch_related('venuepermissions_set').all()
...
Затем я хочу взять возвращенный набор запросов и заменить venue
FK на их объекты.
for item in objects:
for permission in item_venuepermissions_set:
permission_venue = Venue.objects.get(pk=permission_venue)
print(repr(objects))
...
return Response({})
но мой подход явно неверен. как правильно получить доступ к полю набора запросов и изменить его значение?
Как видите, мне нужно сделать это дважды. Один раз для доступа к текущим объектам license_set и еще раз для доступа к этому полю места разрешения_set и переопределить его.
Я не хочу ничего менять базу данных. Это просто для возврата значений.
обновление:
Я внес следующие изменения, чтобы получить доступ к отдельным полям:
for item in objects:
for permission in item.venuepermissions_set:
permission.venue = Venue.objects.get(pk=permission.venue)
print(repr(objects))
return Response({})
новая ошибка, которую я имею:
TypeError: 'RelatedManager' object is not iterable
пытается решить