前提・実現したいこと
Djangoで以下のようなページを作成しました。
下記の「種類の選択は」models.py「UnitInfoのTname2箇所」でManyToManyで作成しています。
このManyToManyの表示方法をカスタマイズすることはできるのでしょうか?
例えば、表示の窓枠を広くしたり、あるいは、チェックボックスで表示にするなど できるのでしょうか?
該当のソースコード
◆models.py
from django.db import models class Series(models.Model): Sname = models.CharField(max_length=1000000,verbose_name='シリーズの名前') class TroubleType(models.Model): Tname = models.CharField('トラブル種類の名前', max_length=100000) class UnitInfo(models.Model): Sname2 = models.ForeignKey(Series, on_delete=models.CASCADE, verbose_name='シリーズの選択') Tname2 = models.ManyToManyField(TroubleType, verbose_name='種類の選択', blank=True) Title = models.CharField(max_length=1000000,verbose_name='タイトル')
◆forms.py
from django import forms from .models import UnitInfo class EditForm(forms.ModelForm): class Meta: model = UnitInfo fields = ['Sname2','Tname2','Title']
◆views.py
from django.shortcuts import render from django.shortcuts import redirect from .models import UnitInfo from .forms import EditForm def edit(request, num): obj = UnitInfo.objects.get(id=num) if (request.method == 'POST'): trouble = EditForm(request.POST, instance=obj) trouble.save() return redirect(to='/find') params ={ 'title':'(Edit)', 'id':num, 'form': EditForm(instance=obj), } return render(request, 'edit.html', params)
◆edit.html
{% extends "base.html" %} {% block body %} <h1>{{title}}</h1> <table> <form action="{% url 'edit' id %}" method="post"> {% csrf_token %} {{ form.as_table }} <tr><td></td><td><input type="submit" value="編集OK(検索画面へ)"></td></tr> </form> </table> <form><a href="{% url 'find' %}">検索画面</a></form> {% endblock %}
試したこと
admin.pyで管理サイトをカスタマイズすれば自動的に(Edit)ページもカスタマイズされるのかと思いましたがちがっていたようです。
◆admin.py
from django.contrib import admin from .models import Series ,TroubleType ,UnitInfo admin.site.register(Series) admin.site.register(TroubleType) class UnitInfoAdmin(admin.ModelAdmin): filter_horizontal = ('Tname2',) admin.site.register(UnitInfo, UnitInfoAdmin)
補足情報
Python 3
anaconda3
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。