I have a django model like the following:
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.
The data in the django model deg_course_cat table look like the following:
I would like to create the mptt structure based on the model and its data i.e. something like the following structure:
How do i approach this problem? As i am kind of new to python, it would be great if i got a heads up on achieving this.
I have tried some code like the following but am not sure how correct it is:
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 = set(deg_course_cat.objects.values_list('degree_code', flat=True))
for i in range(0,len(degreearray)):
degree(i) = 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_level1 = set(deg_course_cat.objects.values_list('category_level1', flat=True))
for categories_l2 in deg_course_cat.objects.values_list('category_level2', flat=True):
category_level2 = set(deg_course_cat.objects.values_list('category_level2', flat=True))
for categories_l3 in deg_course_cat.objects.values_list('category_level3', flat=True):
category_level3 = set(deg_course_cat.objects.values_list('category_level3', flat=True))
You can do something like this
category_l1_array = list(set(deg_course_cat.objects.filter(degree_code=degree[i]).values_list('category_level1', flat=True)))