REST добавляет атрибуты разным пользователям в Django

#django #api #rest

Вопрос:

Я создал свое первое приложение, которое позволяет мне создавать новые записи в таблице под названием «проекты», на данный момент у меня стандартная модель пользователя, и я хотел бы создать новую таблицу, в которой я могу назначить пользователя (идентификатор или имя) одному или нескольким объектам проекта.

В идеале это должна быть совершенно новая таблица, содержащая только пары элементов ID / name пользователя и ID / name проекта. Но я действительно не знаю, как я мог бы извлечь объект из списка пользователей и один из списка проектов, чтобы объединить их в новую таблицу.

Пользователь должен иметь возможность добавлять новый «проект» и автоматически назначаться ему.

Ответ №1:

Что я бы посоветовал сделать, так это структурировать ваши модели следующим образом:

 class Project(models.Model):
    ... other fields
    users = models.ManyToManyField(User, null=True, blank=True)
 

Как вы можете видеть здесь, я использую отношение ManyToMany, которое создает другую таблицу, в которой хранятся пары project_id-user_id.

Если вы хотите вернуть все пользовательские объекты для объекта project, вам следует сделать:

 project = Projects.objects.get(...)
project_users = project.users.all()
 

В случае, если вы хотите вернуть связанные проекты для пользовательских объектов, вы должны сделать:

 user = User.objects.get(...)
user_projects = user.project_set.all()
 

Для получения дополнительной информации, пожалуйста, смотрите https://docs.djangoproject.com/en/3.2/topics/db/examples/many_to_many /