Как решить ошибку TypeError: 'RelatedManager' object is not iterable
У меня есть модели (Meeting и Meetingmemeber) для сохранения информации о встрече и приглашенных людях, и я использую seriliazer вот так :
class MeetingSerializer(serializers.ModelSerializer):
location = MeetingLocationSerializer( required = False)
host = serializers.PrimaryKeyRelatedField(read_only=True)
members = serializers.ListField(child=serializers.EmailField())
class Meta:
model = Meeting
fields = ['id','title','description','date_time','time_zone','host','is_private','is_virtual','url','location','host','members']
extra_kwargs = {'location': {'required': False}}
а это create() :
def create(self, validated_data):
location_data = validated_data.pop('location')
members = validated_data.pop('members')
meeting = Meeting.objects.create( host=self.context['request'].user, **validated_data)
if location_data:
MeetingLocation.objects.create(meeting=meeting,**location_data)
if members :
for member in members:
if member == self.context['request'].user.email:
MeetingMember.objects.create(meeting=meeting, email = member, status="H")
else :
MeetingMember.objects.create(meeting=meeting, email = member, status="I")
return meeting
я отправил этот json и информация о встрече была сохранена в модели встречи\, а письма приглашенных были сохранены в модели Meetingmember :
{
"location": {
"lat": "0.0000000000000003",
"lng": "0.0000000000000002"
},
"title": "bynas1006",
"description": "lets go removed2",
"date_time": "2021-06-30T06:14:00Z",
"time_zone": "Africa/Abidjan",
"is_private": true,
"is_virtual": true,
"url": "www.google.com",
"members":[
"me@me.com",
"admin@admin.com"
]
}
но я получил эту ошибку в терминале :
TypeError: 'RelatedManager' object is not iterable
Я понятия не имею, почему я получил эту ошибку
Ошибка вызвана полем ListField. Вы можете исправить это, заменив
members = serializers.ListField(child=serializers.EmailField())
by
members = serializers.ListSerializer(child=serializers.EmailField())
Отказ от ответственности: Этот ответ - просто обходной путь.
Мне жаль, что я не могу объяснить проблему, но я уже встречал исключения, которые я не мог понять с ListField, поэтому я стараюсь избегать их, насколько это возможно.