Создание поля модели django, которое является внешним ключом, указывающим на поле модели в другом приложении, принимающем массив пользователей в определенной группе

Я новичок в django rest framework, то, чего я пытаюсь достичь, это создать поле модели, которое является внешним ключом и указывает на другую модель приложения и взять их user_id (автоматический id, который предопределен)

users\models.py

class user(models.Model):
    username = models.CharField(max_length=10, unique=True)
    name = models.CharField(max_length=64)
    creationtime = models.DateTimeField(auto_now_add=True)
    userdescription = models.CharField(max_length=250)
    
    def __str__(self) -> str:
        return self.username

teams\models.y

class team(models.Model):
    teamname = models.CharField(max_length=64)
    description = models.CharField(max_length=128)
    creationtime = models.DateTimeField(auto_now_add=True)
    admin = models.ForeignKey(user, related_name='admin', on_delete=models.CASCADE)
    members = models.ForeignKey(user, related_name='members', on_delete=models.CASCADE)

    def __str__(self) -> str:
        return self.teamname

Итак, я хочу, чтобы когда я вижу колонку members в базе данных, она показывала массив user_id, что-то вроде этого:

members: [1,2,5,7,8]

это число относится к автоматическому индексу, который создается для каждой строки или, например, когда мы делаем запрос get для определенного user_id, например: https://localhost:8000/users/1/

Заранее спасибо за помощь.

Вы должны делать это наоборот.

У каждого пользователя должно быть поле team (внешний ключ) с related_name = "members".

Затем, если вы хотите получить всех членов команды, вы можете использовать связанное имя.

(В Django есть только manyToOne, а не OneToMany)

users\models.py

class user(models.Model):
   . . .

  team = models.ForeignKey(user, related_name='members', on_delete=models.CASCADE)

teams\models.y

class team(models.Model):
    teamname = models.CharField(max_length=64)
    description = models.CharField(max_length=128)
    creationtime = models.DateTimeField(auto_now_add=True)
    admin = models.ForeignKey(user, related_name='admin', on_delete=models.CASCADE)
 

    def __str__(self) -> str:
        return self.teamname

Вы можете использовать отношения "многие ко многим", так как это создаст промежуточную таблицу, относящуюся к пользователю и команде

members = models.ManyToManyField(user,help_text='Select members for this team')

Вернуться на верх