Ответы пользователя по тегу Django
  • Как внедрить текстовый редактор в проект на Django?

    @to_east
    Похоже тебе нужен wysiwyg
    Ответ написан
  • Как делается FormSet для отношения ManyToMany?

    @to_east
    Если я правильно понимаю - тебе нужно вывести несколько экземпляров форм с возможностью редактирования, то возможно это поможет(если вопрос актуален еще:)):
    # forms.py
    
    class EditThumbsForm(forms.ModelForm):
        class Meta:
            model = Thumb
            fields = ('src', )
        src = forms.CharField()
    
    
    EditThumbsFormSet = forms.inlineformset_factory(Video, Thumb, form=EditThumbsForm, extra=0)
    
    
    class EditVideosForm(forms.ModelForm):
        class Meta:
            model = Video
            fields = ('id', 'video_id', 'title', )
    
        id = forms.IntegerField()
        video_id = forms.IntegerField()
        title = forms.CharField()
    
    
    class EditVideosModelFormSet(BaseModelFormSet):
        def add_fields(self, form, index):
            super(__class__, self).add_fields(form, index)
            form.thumb_formset = EditThumbsFormSet(
                instance=form.instance,
                data=form.is_bound and form.data or None,
                files=form.is_bound and form.files or None,
                prefix='thumb-%s-%s' % (
                    form.prefix,
                    EditThumbsFormSet.get_default_prefix()
                )
            )
    
    EditVideosFormSet = forms.modelformset_factory(Video, EditVideosForm, formset=EditVideosModelFormSet, extra=0)

    Во вьюхе так:
    class EditVideosView(View):
        template_name = 'admin/edit_videos.html'
    
        def get(self, request):
            instance = Video.objects.all()
            formset = EditVideosFormSet(queryset=instance)
            return render(request, self.template_name, context={'formset': formset})

    А в шаблоне примерно так:
    {% for form in formset %}
        <li>
            {{ form }}
            {% if form.thumb_formset %}
                {{ form.thumb_formset.management_form }}
                <ul>
                {% for thumb in form.thumb_formset %}
                    <li>
                    {{ thumb.src }}
                    </li>
                {% endfor %}
                </ul>
            {% endif %}
        </li>
    {% endfor %}


    Если кратко то необходимо вначале создать формсет с основной модели при помощи modelformset_factory(), а потом уже добавлять связанные таблицы к основной при помощи inlineformset_factory()
    Ответ написан
    Комментировать