Объединение данных из двух таблиц в одном выпадающем списке с помощью 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
Нужно решение:
- Как в коде View получить данные из двух таблиц и отправить их для DropDown. {GET Request}
.- Как я буду хранить значения для одного и того же вместе в таблице правил {Как я уже сказал, DropDown состоит из обоих значений и может быть выбран из всех. вместе. }
- Структура модели {с необходимыми изменениями}.
Для этого нет готового решения. Я могу посоветовать разделить этот выпадающий список на два. Первая - 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']