django 从数据库中获取特定数据

django get specific data from database

我有引用 TbUser TbRoom 和 TbArea 的 TbPeopleEntranceRights。 TbArea 有多个 TbRoom。我想获取具有特定用户的 TbPeopleEntranceRights 未引用的 TbAreas 和 TbRooms。因此,对于用户还没有权限的房间,我会将房间分配给用户。

我在拥有用户和所有访问权限时需要这个。所有房间和区域。

class TbArea(models.Model):
    id = models.CharField(primary_key=True, max_length=40)
    area_name = models.CharField(max_length=60, blank=True, null=True)


class TbRoom(models.Model):
    id = models.CharField(primary_key=True, max_length=40)
    room_name = models.CharField(max_length=60, blank=True, null=True)
    area = models.ForeignKey(
        TbArea, on_delete=models.CASCADE, db_column='room_area_id')
    

class TbPeopleEntranceRight(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    area = models.ForeignKey(
        TbArea, on_delete=models.CASCADE, db_column='room_area_id')
    room = models.ForeignKey(
        TbRoom, on_delete=models.CASCADE, db_column='room_id')
    user = models.ForeignKey(
        TbUser, on_delete=models.CASCADE, db_column='people_id')
    last_update_time = models.BigIntegerField(blank=True, null=True)



class TbUser(AbstractBaseUser, PermissionsMixin):
    id = models.CharField(primary_key=True, max_length=32, default=uuid.uuid4)
    username = models.CharField(
        max_length=40, blank=True, null=True, unique=True, db_column='usname')
    password = models.CharField(
        max_length=255, blank=True, null=True, db_column='psword')

如果你想获取未被 TbPeopleEntranceRights 引用的 TbArea 对象(对于登录用户)那么你可以这样做。

TbArea.objects.filter(tbpeopleentranceright__isnull=True, tbpeopleentranceright__user=request.user)