Я пытаюсь переопределить метод обновления в моем сериализаторе, чтобы обновить поле 'status', которое является столбцом в моей базе данных.
Я нашел здесь в StackOverflow этот код, который предположительно будет выполнятьработа для меня:
def update(self, instance, validated_data):
fields=instance._meta.fields
exclude=[]
for field in fields:
field=field.name.split('.')[-1] #to get coulmn name
if field in exclude:
continue
exec("instance.%s = validated_data.get(field, instance.%s)"%(field,field))
instance.save()
return instance
Но я просто не понимаю, что делает эта строка кода?
exec("instance.%s = validated_data.get(field, instance.%s)"%(field,field))
Я был бы признателен за помощь, пожалуйста.
РЕДАКТИРОВАТЬ: это релевантная часть моего сериализатора: (метод обновления не определен, но я определил один на мой взгляд)
class Meta:
model = Match
fields = ['id', 'home_team', 'away_team', 'date_time', 'home_team_kit', 'away_team_kit',
'home_team_score', 'away_team_score', 'competition_edition', 'competition_round',
'stadium', 'pitch_length', 'pitch_width', 'referees', 'players', 'ball',
'event_provider', 'lineup_provider', 'sr_id', 'status']
class MatchUpdateSerializer(MatchWriteSerializer):
def get_unique_together_validators(self):
return []