0
私は以下の3つのモデルを持っています。メディアオブジェクトをシリアル化するとき、所有者は必要なようにリストされます。トラフテーブルはis_accepted
の値を保持していますが、私はメディアシリアライザがメディアを受け取った所有者だけを一覧表示するようにしたいと考えています。どのようにこれを達成するための任意のアイデア?DRF:シリアライザフィルタ関連オブジェクトを
モデル:
class Media(models.Model):
genre = models.ForeignKey(Genre, blank=True, null=True, db_index=True)
owners = models.ManyToManyField(User, through='Usermedia', related_name='owners')
title = models.CharField(max_length=45, blank=True)
created = models.DateTimeField(auto_now_add=True)
class Usermedia(models.Model):
user = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name='usermedia')
media = models.ForeignKey(Media, on_delete=models.CASCADE, related_name='ownership')
is_active = models.BooleanField(default=0)
is_accepted = models.BooleanField(default=1)
class User(AbstractBaseUser, PermissionsMixin):
email=models.CharField(unique=True, max_length=255)
シリアライザ
class UserSerializer(serializers.ModelSerializer):
email = serializers.EmailField(
validators=[validators.UniqueValidator(queryset=User.objects.all())]
)
class MediaSerializer(serializers.ModelSerializer):
owners = UserSerializer(many=True, required=False)
created = serializers.DateTimeField(read_only=True)
genre = serializers.SlugRelatedField(required=True, slug_field='name', queryset=Genre.objects.all())
この