[英]Creating mptt from a django model
我有一個django模型,如下所示:(它同時具有mptt和常規模型)
from django.db import models
from mptt.models import MPTTModel, TreeForeignKey
class deg_course_cat(models.Model):
degree_code = models.CharField(max_length=24)
specialization = models.CharField(max_length=48)
category_level1 = models.CharField(max_length=48)
category_level2 = models.CharField(max_length=96)
category_level3 = models.CharField(max_length=48)
min_credit = models.IntegerField()
max_credit = models.IntegerField()
primarystuff = models.CharField(max_length=24)
class deg_course_cat_mptt(MPTTModel):
name = models.CharField(max_length=100, unique=False)
min_credit = models.IntegerField(null=True)
max_credit = models.IntegerField(null=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
class MPTTMeta:
order_insertion_by = ['name']
# Create your models here.
我編寫了一個python代碼,以獲取Django模型的所有數據,並從中自動創建一個mptt模型。 python代碼如下所示:
from studentapp.models import deg_course_cat, deg_course_cat_mptt
degreeroot = deg_course_cat_mptt.objects.create(name="DegreeRoot")
for degrees in deg_course_cat.objects.values_list('degree_code', flat=True):
degreearray = list(set(deg_course_cat.objects.values_list('degree_code', flat=True)))
for i in range(0,len(degreearray)):
degree = []
degree.append(deg_course_cat_mptt.objects.create(name= degreearray[i], parent=degreeroot))
for categories_l1 in deg_course_cat.objects.values_list('category_level1', flat=True):
category_l1_array = list(set(deg_course_cat.objects.filter(degree_code=degree[i]).values_list('category_level1', flat=True)))
for j in range(0,len(category_l1_array)):
categorylevel1 = []
categorylevel1.append(deg_course_cat_mptt.objects.create(name= category_l1_array[j], parent=degree[i]))
我收到以下錯誤:
Traceback (most recent call last):
File "manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/home/abhishek/projects/studentmptt/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 399, in execute_from_command_line
utility.execute()
File "/home/abhishek/projects/studentmptt/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 392, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/abhishek/projects/studentmptt/local/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv
self.execute(*args, **options.__dict__)
File "/home/abhishek/projects/studentmptt/local/lib/python2.7/site-packages/django/core/management/base.py", line 285, in execute
output = self.handle(*args, **options)
File "/home/abhishek/projects/studentmptt/local/lib/python2.7/site-packages/django/core/management/base.py", line 415, in handle
return self.handle_noargs(**options)
File "/home/abhishek/projects/studentmptt/local/lib/python2.7/site-packages/django/core/management/commands/shell.py", line 83, in handle_noargs
import code
File "/home/abhishek/projects/studentmptt/studentsite/code.py", line 12, in <module>
category_l1_array = list(set(deg_course_cat.objects.filter(degree_code=degree[i]).values_list('category_level1', flat=True)))
IndexError: list index out of range
在您的錯誤陳述中
category_l1_array = list(set(deg_course_cat.objects.filter(degree_code=degree[i]).values_list('category_level1', flat=True)))
顯然,變量度在索引i上沒有任何值。 這就是為什么它使Indexerror:list索引超出范圍的原因。
您可以通過在錯誤行之前使用import pdb; pdb.set_trace()語句來調試問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.