2017-12-26 9 views
-1

many-to-many 관계의 속성에 액세스하려면 어떻게해야합니까? 그리고 모델에.many-to-many 관계의 속성에 액세스하는 방법

class Courses(models.Model): 
    courses_name = models.CharField(max_length=100) 
    duration = models.CharField(max_length=100) 
    def __str__(self): 
     return u'%s' % (self.courses_name) 

    class Meta: 
     verbose_name_plural = 'Courses' 
     verbose_name = 'Courses' 
class EducationEntity(models.Model): 
    name = models.CharField(max_length=100) 
    type = models.ForeignKey(EducationEntityType) 
    location_type = models.ForeignKey(LocationType) 
    institute_type = models.ForeignKey(InstituteType) 
    course = models.ManyToManyField(Courses) 
    established=models.DateField(default=datetime.date.today) 
    approved_by=models.CharField(max_length=200) 
    college_facilities=models.CharField(max_length=200) 
    image = models.ImageField(upload_to='images/',default="none") 
    def __str__(self): 
     return u'%s' % (self.name) 

    class Meta: 
     verbose_name_plural = 'Education Entity' 
     verbose_name = 'Education Entity' 

    @property 
    def course_(self): 
     # import ipdb; 
     # ipdb.set_trace() 
     amount='' 
     data = [] 
     duration='' 
     interest_rate='' 
     loan=[] 
     for i in self.course.all(): 
       try: 
        for cou in EducationEntityCourses.objects.filter(course=i): 

         for l in LoanDetails.objects.filter(education_entity_courses__course=i): 
          amount=l.amount 

          for lo in LoanTenure.objects.filter(loan_details__education_entity_courses__course=l): 
            loan.append({"duration": lo.duration,"interest_rate": lo.interest_rate}) 



       except Exception as e: 
        amount='' 

       import ipdb; 
       ipdb.set_trace() 

       data.append({ 
        "courses_name": i.courses_name, 
        "duration":cou.duration, 
        "course_type":cou.course_type, 
        "tution_fees":cou.tution_fees, 
        "hostel_fees":cou.hostel_fees, 
        "other_fees":cou.other_fees, 
        "amount":amount, 
        "loan":loan 

       }) 
     import ipdb; 
     ipdb.set_trace() 

     return data 
class EducationEntityCourses(models.Model): 
    education_entity = models.ForeignKey(EducationEntity) 
    course = models.ForeignKey(Courses) 
    duration = models.CharField(max_length=100) 
    course_type = models.ForeignKey(CourseType) 
    tution_fees = models.CharField(max_length=100) 
    hostel_fees = models.CharField(max_length=100) 
    other_fees = models.CharField(max_length=100) 
    def __str__(self): 
     return u'%s, %s' % (self.education_entity.name, self.course.courses_name) 

    class Meta: 
     verbose_name_plural = 'Education Entity Courses' 
     verbose_name = 'Education Entity Courses' 
class LoanDetails (models.Model): 
    education_entity_courses = models.ForeignKey(EducationEntityCourses) 
    # training_coaching=models.ForeignKey(TrainingCoaching,blank=True,null=True) 
    amount = models.CharField(max_length=100) 

    def get_course(self): 
     """ 
     get course name 
     :return: 
     """ 
     return self.education_entity_courses.course.courses_name 

    get_course.short_description="Course Name" 

    def __str__(self): 

     return u'%s, %s' % (self.education_entity_courses.course.courses_name,self.education_entity_courses.education_entity.name) 

    class Meta: 
     verbose_name_plural = 'Loan Details' 
     verbose_name = 'Loan Details' 


class LoanTenure(models.Model): 

     duration = models.ForeignKey(Duration) 
     interest_rate=models.FloatField(max_length=5) 
     loan_details=models.ForeignKey(LoanDetails) 
     def get_college(self): 
      """ 
      get course name 
      :return: 
      """ 
      return self.loan_details.education_entity_courses.education_entity.name 

     get_college.short_description = "College Name" 

     def __str__(self): 
      return u'%s' % (self.loan_details.education_entity_courses.course.courses_name) 

     class Meta: 
      verbose_name_plural = 'Loan Tenure' 
      verbose_name = 'Loan Tenure' 

(코스) 세부 정보, 대출 세부 정보 및 대출 기간에 대한 세부 정보를 얻고 싶습니다. 동일한 데이터가 반복됩니다. Tenure 특정 과정을 대출하고 싶습니다.

{ "이름": "기술의 AD 파텔 연구소 - [ADIT], Vallabh Vidyanagar" "유형": "대학", "college_facilities": "호스텔 의료", "institute_type" " 개인 ", "LOCATION_TYPE ":"국내 ", "approved_by ":"GTU, 아메 다 바드 " "설립 ":"2000-01-01 ", "course_ "[ { "tution_fees "" "545", "courses_name": "BTECH", "hostel_fees": "545", "기간": "54654", "금액": "45485", "대출" { "interest_rate"1 "기간": "12" } { "interest_rate"1254 "기간": "6" } { "interest_rate"78 "기간": "12" } { "interest_rate"1 "기간": "12" } { "interest_rate"1254 "기간": "6" } { "interest_rate": 78,,515,"기간": "12" } { "interest_rate"1 "기간": "12" } { "interest_rate"1254 "기간": "6" } , { "interest_rate"78 "기간": "12" } { "interest_rate"1 "기간": "12" } { "interest_rate"1254 "재생 시간": "6" }, { "interest_rate"78 "기간": "12" } { "interest_rate"14 "기간": "6" } ] "other_fees": "454" "course_type": "full_time" } { "tution_fees": "80000" "courses_name": "에 MTech" "hostel_fees": "0", "기간": "3", "금액": "3.2 " "대출금 "[ { "interest_rate "1 "기간 ":"12 " } { "interest_rate "1254 "기간 ":"6 " } { "interest_rate"78 "기간": "12" } { "interest_rate"1 "기간": "12" } { "interest_rate"1254 " duration ":"6 " }, {,363,210 "interest_rate"78 "기간": "12" } { "interest_rate"1 "기간": "12" } { "interest_rate"1254 "지속 ":"6 " } { "interest_rate "78 "기간 ":"12 " } { "interest_rate "1 "기간 ":"12 " } { "interest_rate": 1254, "재생 시간": "6",691,363,210} { "interest_rate"78 "기간": "12" } { "interest_rate"14 "기간": "6" } ] "other_fees" "0", "course_type": "full_time" } , "objectID에": "2" }

당신이 할 수있는

답변

0

는 다음

은 일을 더 쉽게 만들기 위해 related_name 추가 :

class LoanTenure(models.Model): 
     loan_details = models.ForeignKey(LoanDetails, related_name="tenures") 

그리고, 예를 들면 : 그런데

details = LoanDetails.objects.first() 
print details.tenures.all() 

, 컨벤션 장고 모델,하지 Courses하지만 Course에 대한 단수를 사용하는 것입니다.

관련 문제