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)
我有引用 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)