简体   繁体   English

Django模型和mptt集成

[英]Django model and mptt integration

I have a django model like the following: 我有一个像下面的django模型:

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: Django模型deg_course_cat表中的数据如下所示:

在此处输入图片说明

I would like to create the mptt structure based on the model and its data ie something like the following structure: 我想基于模型及其数据创建mptt结构,例如以下结构:

在此处输入图片说明

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. 因为我是python的新手,所以如果我能实现这个目标,那就太好了。

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))

你可以做一些像这样

category_l1_array = list(set(deg_course_cat.objects.filter(degree_code=degree[i]).values_list('category_level1', flat=True)))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM