django ormでカテゴリのモデル階層を表現したいと思います。 だからf.i.次のようなカテゴリを持つことができます:階層のdjangoモデルフィールド定義、GenericForm
TopCategory
SubCategory1
SubSubCategory
SubCategory2
これは、親カテゴリを指す私のフィールド定義、次のとおりです。
class Category(models.Model)
parentcategory = models.OneToOneField('self', blank = True, null = True)
そして、私はビューでGenericFormを使用します。
def detail(request, category_id):
categoryInstance = Category.objects.get(pk = category_id)
GenericForm = modelform_factory(Category)
form = GenericForm(instance = categoryInstance)
if request.method == 'POST':
form = GenericForm(request.POST, instance = categoryInstance)
if form.is_valid():
form.save()
これはうまくいく、ちょっとした問題は1つしかない。 カテゴリは、親として自身を指すことはできません。 フォームはすべてのカテゴリが一覧表示されるドロップダウンをレンダリングします。
私は、フィールド定義では、このような何かを試してみました:
limit_choices_to = Q('parentcategory_id' is not id)
しかし、それは私にエラーを与えました。 おそらくユーザにエラーメッセージをチェックして提示することができますが、別の方法を知っているかもしれません。
'ForeignKey'の' limit_choices_to'属性は、オブジェクトのインスタンス変数にアクセスすることができないので、使用できません。 –