Как получить имя поля внешнего ключа в методе post? - PullRequest
1 голос
/ 15 мая 2019

У меня есть API, который я передаю некоторые примеры данных.Я перезаписываю метод post путем копирования Queryset, чтобы я мог манипулировать выходными данными.Я хотел бы получить доступ к значению отношения внешнего ключа, но я могу получить доступ только к самому внешнему ключу.

Вот так:

 def post(self, request, *args, **kwargs):
        data_request = request.data
        data_request = data_request.copy()

        machine_na = data_request.__getitem__('project')
        ##this gives me the id of the foreign key
        data_request.__setitem__('project', str('my value'))

        return Response(data_request, *args, **kwargs)

Теперь это работает.Но я не могу получить доступ к названию внешнего ключа.

Мои модели в качестве иностранных ключей:

class Machine(models.Model):
    machine_name            = models.CharField(max_length=120, primary_key=True)

    def __str__(self):
        return self.machine_name


class Project(models.Model):
    project_name            = models.CharField(max_length=120, primary_key=True)

    def __str__(self):
        return self.project_name

Моя модель, которая относится к другим:

class Simulation(models.Model):
    user                    = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, default=1)
    machine                 = models.ForeignKey(Machine, on_delete=models.CASCADE, default=1)
    project  

Надеюсь, я достаточно ясна.Я хотел бы получить доступ к конкретному имени, например, внешнего ключа 2.

, вызывающего 'project.project_name', не работает, и все остальное, что я пробовал, также нет.

Любая помощь высоко ценится.Заранее спасибо

1 Ответ

2 голосов
/ 15 мая 2019

Получить объект проекта с помощью ключа, а затем получить имя от объекта.

    project=Project.objects.get(id=int(self.request.POST['project']))
    machine_na = project.project_name
...