我有以下型号
class STUser(AbstractBaseUser):
email = models.EmailField(unique=True)
name = models.CharField(max_length=255)
companyname = models.CharField(max_length=200, blank=True, null=True)
...
class VenuePermissions(models.Model):
user = models.ForeignKey(STUser, on_delete=models.CASCADE)
venue = models.ForeignKey(Venue, on_delete=models.CASCADE)
signupvaildatestring = models.CharField(max_length=200, blank=True, null=True)
...
我想获取所有STUser
对象并获取它们的所有权限。
所以我想要的是抓住所有的VenuePermissions
物体。并抓取每个场地的user
和venue
对象权限
我有两种方法可以做到这一点。使用VenuePermissions_set
属性,STUser
但是当它只是一个pk
值时我如何抓住场地?
或者专注于VenuePermissions
对象并从 pk 值中获取用户和场地,但如何?
我记得嵌套查询,我在浏览代码中做了一个。
这是一个例子:
rooms = Room.objects.filter(venue=OuterRef('pk'), sixtyroundseatingoption= True)
venuelist = venuelist.annotate(sixtyrounds=Exists(rooms))
venuelist = venuelist.filter(Q(sixtyrounds = True) | Q(fullbuyoutsixtyroundseatingoption = True))
我之前在序列化程序中完成了设置对象
示例序列化程序:
class RoomAndImageSerializer(serializers.ModelSerializer):
roomimage_set = RoomImageSerializer(many=True, read_only=True)
class Meta:
model = Room
fields = ('pk','name')
对此查询的任何帮助将不胜感激!
所以这就是我目前正在尝试的,如果可行,我将发布答案:
class VenueUserList(ListAPIView):
serializer_class = VenueUserListSerializer
queryset = VenuePermissions.objects.select_related('user').select_related('venue').filter(signupvaildatestring=None)
class VenueUserListSerializer(serializers.ModelSerializer):
user = UserSerializer()
venue = VenueSerializer()
class Meta:
model = VenuePermissions
fields = ('user', 'venue', 'isvenueviewer', 'isvenueeventplanner', 'isvenueadministrator')