Итак, господа, после нескольких часов танцов с бубном найдено решение! Чтобы принудительно сохранить теги в базе нужно на уровне функций представлений использовать цикл for для form.cleaned_data['tags'] и привязку тегов к объекту через код obj.tags.add(). На примере моей функции-представления, которая показана выше, рабочий код такой (может он и говнокод, но он РАБОТАЕТ, а лучше решения за сутки никто не смог предложить):
@login_required
def new_city(request, countries_id):
country=Countries.objects.get(id=countries_id)
if request.method != 'POST':
form=CitiesForm()
else:
form=CitiesForm(data=request.POST)
if form.is_valid():
new_city=form.save(commit=False)
new_city.country=country
new_city.save()
for tag in form.cleaned_data['tags']:
new_city.tags.add(tag)
....
Потом вставляем в шаблон подобный код, как учил Дронов, и прекрасно все работает - теги сохраняются в базе через отправленную форму, прекрасно отображаются, через запятую, фильтруются, все отлично, господа!
{% with names=city.tags.names %}
{% if names.count > 0 %}
Tags: {% for name in names %}{% if not forloop.first %}, {% endif %} <a href="...?tag=..."> {{ name }} </a> {% endfor %}
{% endif %}
{% endwith %}