AS user @dirkgroten указал в комментарии к вопросу, следующая строка выглядит странно:
queryset=ModelA.objects.values_list('b__name', flat=True)
Таким образом, виджет не может узнать pk
каждого элемента списка (так как он возвращает только имена). Это может привести к тому, что представление не может сохранить выбранный экземпляр ModelB
, поскольку оно не знает выбранного pk
.
Ах, вы также можете использовать ModelB
вместо ModelA
Попробуйте изменить его на что-то вроде этого
queryset=ModelB.objects.values('pk', 'b__name')
или даже это
queryset=ModelB.objects.all()
и дайте нам знать, если это работает.