0
我想在django orm中表示類別的模型層次結構。 So f.i.你可以有類如:django model層次結構的模型字段定義,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()
這確實有效,只有一個小問題。 沒有類別應該被允許指向自己作爲父級。 然而,該表格會顯示列出所有類別的下拉列表。
我也嘗試這樣的事情在字段定義:
limit_choices_to = Q('parentcategory_id' is not id)
但是,這給了我一個錯誤。 我可能會檢查並向用戶顯示錯誤消息,但也許有人知道另一種方式?
恐怕你不能使用'ForeignKey'的'limit_choices_to'屬性,因爲它不能訪問對象的實例變量。 –