Объединение данных из двух таблиц в одном выпадающем списке с помощью Django

Проблема: У меня есть две таблицы Users и Users Group и в front end на запросе конкретной страницы нужно отправить все данные из обеих таблицы вместе, так как есть определенный выпадающий список, чтобы показать их обе, и после завершения операции на этой странице данные будут получены обратно в POST запросе (текущие структуры моделей приведены ниже), я не понимаю, как мне сделать соединение во всех этих трех таблицах так, чтобы это было управляемо, пожалуйста, дайте мне знать.

.

Модель: User.py

class Users(AbstractBaseUser):
    vendor_name = models.ForeignKey(Vendor, on_delete=models.CASCADE, default=None, null=True)
    username = models.CharField(max_length=100, verbose_name="username", unique=True)
    password = models.CharField(max_length=100)
    created_by = models.DateField(verbose_name="created_by", auto_now_add=True)

    USERNAME_FIELD = "username"
    REQUIRED_FIELDS = ['password', 'hardware_id']

    is_active = models.BooleanField(default=True)
    is_admin = models.BooleanField(default=False)
    is_role_vendor = models.BooleanField(default=False)
    is_role_customer = models.BooleanField(default=True)

    def __str__(self):
        return self.username

    objects = UserManager()

Модель: UserGroup.py

class UserGroup(models.Model):
    vendor_id = models.ForeignKey(Vendor, on_delete=models.CASCADE, default=None, null=True)
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=1000)
    users = models.ManyToManyField(Users)

    def __str__(self):
        return self.name

Модель: Rules.py

class Rules(models.Model):
    vendor_id = models.ForeignKey(Vendor, on_delete=models.CASCADE, default=None, null=True)
    id = models.IntegerField(primary_key=True)
    name = models.CharField(max_length=100)
    description = models.CharField(max_length=1000)
    # Here i need to mention the code for field where i can store the combined value of User and UserGroup [selected from the dropdown].

    def __str__(self):
        return self.name

Нужно решение:

  1. Как в коде View получить данные из двух таблиц и отправить их для DropDown. {GET Request}
  2. .
  3. Как я буду хранить значения для одного и того же вместе в таблице правил {Как я уже сказал, DropDown состоит из обоих значений и может быть выбран из всех. вместе. }
  4. Структура модели {с необходимыми изменениями}.

Для этого нет готового решения. Я могу посоветовать разделить этот выпадающий список на два. Первая - UserGroup, вторая - User. Вы можете заполнить выпадающий список пользователей на основе выбранной UserGroup с помощью ajax или htmx -> htmx value-select

В вашей модели Правила (должно быть Правило) добавьте поля:

 user = models.ForeignKey(Users, on_delete=models.CASCADE)
 group = models.ForeignKey(UserGroup, on_delete=models.CASCADE)

если для каждого пользователя (это также должен быть пользователь)/группы пользователей может быть только одно правило, добавьте unique_toigether к модели Rules:

unique_together = ['user', 'group']

django docs unique_together

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