首页 > 解决方案 > 使用 Django 将信息从另一个模型附加到模型

问题描述

在我的 Django 聊天应用程序中,用户拥有对公司的访问权限以及对该公司某些聊天室的访问权限。他们需要公司访问权限才能被授予访问聊天室的权限。

当用户连接到房间时,我想在列中显示所有具有相关公司的公司访问权限的用户,以及每个有权访问聊天室的用户(复选框),以便用户可以轻松通过单击复选框从聊天室中添加或删除。

为了显示这个用户列表,我可以手动构建一个具有所有公司访问权限的 Python 对象,并为每个对象添加一个字段,指示该人是否也可以访问房间。没有一种纯粹的 Django 方法可以做到这一点吗?

这是我的模型:

class CompanyAccessRight(models.Model):
    user = models.ForeignKey('auth.User', on_delete=models.CASCADE, related_name="accessrights")
    company = models.ForeignKey(Company, on_delete=models.CASCADE, related_name="authorizedpeople")

class Room(models.Model):
    acessrights = models.ManyToManyField(CompanyAccessRight, through='RoomAccessRight')

class RoomAccessRight(models.Model):
    room = models.ForeignKey(Room, on_delete=models.CASCADE, related_name='accessrightsforroom')
    accessrights = models.ForeignKey(CompanyAccessRight, on_delete=models.CASCADE, related_name='roomaccessrightsforcompany')

这是我手动创建对象的视图(它有效):

companyaccessrights = CompanyAccessRight.objects.filter(company=company)
roomaccessrights = RoomAccessRight.objects.filter(room=room)
for companyaccessright in companyaccessrights:
    companyaccessright.hasaccess = False
    for roomaccessright in roomaccessrights:
        if roomaccessright in companyaccessright.roomaccessrightsforcompany.all():
            companyaccessright.hasaccess = True

标签: djangodjango-modelsforeign-keys

解决方案


推荐阅读