私は次のモデルを持っています
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
これを行うには2つの方法があります。VenuePermissions_set
on 属性を使用します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')