使用Django将两个表的数据组合到单个下拉列表中

发布于 2025-02-11 05:58:15 字数 2045 浏览 1 评论 0原文

问题:我有两个桌子用户和用户组,在前端开启 该特定页面的请求需要从同时发送所有数据 将表格在一起,因为有特定的下拉可以显示它们,并且完成该页面数据的操作将在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

模型:ulud.pypy

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. 如何进行编码,以获取两个表的数据以将其发送以进行下拉。 {获取请求}
  2. 我将如何将相同的值一起存储在规则表中{正如我所说的下拉值构成两个值,并且可以选择全部 一起。 }
  3. 模型的结构{带有所需更改}。

Problem: I have Two Tables Users and Users Group and in front end on
request of that particular page need to send all data from both the
table together, as there is specific drop down to show them both, and after done with the operation of that page data will get back in POST request (current models structures is given below), i am not getting how do i make connection in all these three tables so that it will get managed, Please let me know.

Model: 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()

Model: 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

Model: 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

Need Solution:

  1. How do i code in View to fetch the data of Two tables to send them for DropDown. {GET Request}
  2. How will i store the values for the same together in Rules Table { As i said DropDown consist both values and can be selected all
    together. }
  3. The Structure of the Model {with the required Changes}.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

絕版丫頭 2025-02-18 05:58:16

没有开箱即用的解决方案。我可以建议将这个下拉列表置于两个。首先使用用户组,第二个用用户。您可以使用AJAX或HTMX - &GT填充基于选定的用户组的用户下拉订单。 htmx value-lect

在您的模型规则中(应该是规则)
添加字段:

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

如果每个用户只能有一个规则(这也应该是用户)/用户group添加unique_toigether到模型规则:

unique_together = ['user', 'group']

django docs unique_together

there is no out of the box solution for that. I can advise to seprate this dropdown into two. First with UserGroup, second with User. You can fill user dropdown based on selected UserGroup with ajax or htmx -> htmx value-select

In your model Rules (should be Rule)
add fields:

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

if there can be only one rule per Users(this should also be User)/UserGroup add unique_toigether to model Rules:

unique_together = ['user', 'group']

django docs unique_together

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文