У своїх моделях я маю UserProfile
що має поле під назвою public_profile
. Серіалізатор для Event
модель (інша модель) - це:
class EventSerializer(serializers.ModelSerializer):
going = UserProfSerializer(read_only=True, many=True)
notGoing = UserProfSerializer(read_only=True, many=True)
class Meta:
model = Event
fields = ("name", "place", "date", "going", "notGoing", "slug")
Де going
і notGoing
є відношенням багато до багатьох у базі данихПрофіль користувача. Моє питання полягає в тому, як я можу вибрати, які поля відображати в UserProfSerializer, залежно від конфігурації профілю, загальнодоступний він чи ні. Наприклад, я хочу, щоб користувач pk та зображення профілю відображалися, але не ім’я користувача.
Відповіді:
3 для відповіді № 1Ви можете замінити to_representation
спосіб:
class UserProfSerializer(serializers.ModelSerializer):
PUBLIC_FIELDS = ("id", "avatar")
class Meta:
model = UserProfile
fields = ("id", "username", "avatar")
def to_representation(self, obj):
response = super(UserProfSerializer, self).to_representation(obj)
if not obj.public_profile:
for field in response:
if field not in self.PUBLIC_FIELDS:
del response[field]
return response