使用内联在前端启用Django管理功能

Ale*_*kov 9 python django django-admin formset inline-formset

我决定将我的管理网站的一些功能移到前端.功能包括使用一些外键内联管理一个模型.

为此,我已经安装了django-dynamic-formset JQuery插件(链接git)并且已经挣扎了几天.这是其中一个问题.

Django管理员已经实现了相同的功能.我可以根据需要添加,修改,删除内联和修改模型实例.我想知道为什么我应该使用这个JQuery插件,为什么在互联网上没有这么多关于这个主题的好教程?

我需要一个很好的最近的例子,说明如何在没有第三方JS文件的情况下在前端使用django formsets或inline formsets.如果它有链接(不是复选框)来删除内联项并添加将正确添加新内联的按钮,我会很高兴.

更具体一点,因为这个问题被认为过于宽泛:

我有两个模型School和SchoolPlace:

class School(models.Model):
     name = models.CharField(_('School name'), max_length=100)

class SchoolPlace(models.Model):

    school = models.ForeignKey(School, verbose_name=_('school place'), related_name='school_places', blank=True, null=True)

    name = models.CharField(_('School place name'), max_length=200)

    city = models.ForeignKey(City, blank=True, null=True, verbose_name=_('city'),
                     help_text='city')
Run Code Online (Sandbox Code Playgroud)

还有相应的形式:

class SchoolForm(forms.ModelForm):

      name = forms.CharField(
                             label=_('Name'),
                             widget=forms.TextInput(attrs={
                                'placeholder': _('school name')}),
                              max_length=100, required=True)

class SchoolPlaceForm(forms.ModelForm):

    name = forms.CharField(label=_('Name'),
                            widget=forms.TextInput(
                                        attrs={'placeholder': _('school place name')}),
                                        max_length=200,
                                        required=False)

    city = forms.ModelChoiceField(label=_('City'),
                                  widget=forms.Select(attrs={'class': 'ui search dropdown'}),
                                  queryset=City.objects.all(), required=False)

    class Meta:
        model = SchoolPlace
        fields = ['name','city']
        exclude = ['school']
Run Code Online (Sandbox Code Playgroud)

我想以与Django管理员相同的方式编辑这两个模型,但仅限于我自己的前端.至于所有js文件已经在django.contrib.admin中,我想这样做而不使用侧面应用程序和插件.

我需要与Django管理员相同的功能:添加,删除,修改SchoolPlace内联.这是截图:在此输入图像描述

小智 1

我建议您使用管理表单(在您的视图中)或管理视图(在自定义网址上),然后仅更改管理模板,甚至仅加载管理 JavaScript,您可以在管理模板中找到它。