Я пытаюсь добавить Tags
к своим экземплярам модели, используя пакет django-taggit's
. Для этого я добавил поле tags
в свою модель, как оно определено в определении django-taggit's
.
class MyModel(models.Model):
name = models.CharField(max_length=100)
tags = TaggableManager()
Я хочу добавить эту модель в панель администратора django и хочу использовать виджет FilteredSelectMultiple для добавления тегов. для этого я создал форму модели и изменил виджет ее поля.
class MyModelForm(forms.ModelForm):
tags = forms.ModelMultipleChoiceField(queryset=Tag.objects.none())
def __init__(self, *args, **kwargs):
super(MyModelForm, self).__init__(*args, **kwargs)
self.fields['tags'].widget = FilteredSelectMultiple('Tags', False)
self.fields['tags'].queryset = Tag.objects.all()
class Meta:
model = MyModel
exclude = []
класс MyModelAdmin (admin.ModelAdmin): форма = MyModelForm
все работает нормально. Теги сохраняются после сохранения экземпляра. но проблема в том, что когда я открываю страницу обновления. В части «Выбранные теги» виджета поля нет ранее выбранных тегов. Он пуст, и все варианты доступны в опции «Доступные теги».
Я пытался предоставить исходные данные также для change_form
администратора модели, но у меня ничего не работает.
def get_changeform_initial_data(self, request):
return {'tags': self.object.tags.all()}
self.object
— это объект, который я получил методом get_object()
класса ModelAdmin
.
Дайте мне решение.