我想在django orm中表示类别的模型层次结构。 所以f.i.你可以有以下类别:
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()
这确实有效,只有一个小问题。 不应允许任何类别将自己指向父母。 该表单会显示一个下拉列表,其中列出了所有类别。
我在字段定义中尝试了类似的内容:
limit_choices_to = Q('parentcategory_id' is not id)
但这给了我一个错误。 我可能会检查并向用户显示错误消息,但也许有人知道另一种方式?