まず、djangoモデルを作成する必要があります。
このコードをに入れますmodels.py
。
class Names(models.Model):
name = models.CharField(max_length = 100)
次に、管理モデルを作成する必要があります。
このコードをに入れますadmin.py
。
class NamesAdmin(admin.ModelAdmin):
list_display = ['name']
# whatever you want in your admin panel like filter, search and ...
admin.site.register(Names, NamesAdmin)
ご要望にお応えできると思います。また、名前を分割する場合は、save modelメソッドをオーバーライドして、そこで名前を分割できます。ただし、追加のフォームが必要な場合は、djangoモデルフォームを簡単に作成できます。
admin.py
、views.py
またはのような場所にコードを配置しますforms.py
class NamesForm(forms.ModelForm)
class Meta:
model = Names
それがあなたのモデルと形です。したがって、フォームをdjango管理パネルに追加する場合は、djangoadminでそのビューを作成する必要があります。これを行うには、共通のビューを作成します。
admin.py
またはにコードを入力しますviews.py
。
def spliter(req):
if req.method == 'POST':
form = NamesForm(req.POST)
if form.is_valid():
for name in form.cleaned_data['names'].split(' '):
Names(name = name).save()
return HttpResponseRedirect('') # wherever you want to redirect
return render(req, 'names.html', {'form': form})
return render(req, 'names.html', {'form': NamesForm()})
names.html
以下のコードを作成してhtmlページに配置する必要があることに注意してください。
{% extends 'admin/base_site.html' %}
{% block content %}
<!-- /admin/names/spliter/ is your url in admin panel (you can change it whatever you want) -->
<form action="/admin/names/spliter/" method="post" >{% csrf_token %}
{{ form }}
<input type="submit" value="'Send'" >
</form>
{% endblock %}
これはあなたの見解であり、どこでも使用できます。ただし、管理者だけにこのページを表示する権限を持たせたい場合は、NamesAdmin
クラスにもこのメソッドを追加する必要があります。
def get_urls(self):
return patterns(
'',
(r'^spliter/$', self.admin_site.admin_view(spliter)) # spliter is your view
) + super(NamesAdmin, self).get_urls()
それでおしまい。これがお役に立てば幸いです。