我无法为我遇到的问题提供适当的标题。我将尽我所能解释。
我有2个模型College和Course。大学与课程有很多关系。我也有一个名为College_Specific_Course_Details的模型,该模型具有College和course作为外键,并具有一个称为“ Fee”的额外属性。
我可以从后端添加college,course和college_specific_course_details。在前端,我有一个要求,我必须列出特定学院的所有课程及其费用。这是因为即使课程内容相同,特定的课程在不同的学院也可能会收取不同的费用。
我可以在模板中列出带有college.courses.all的课程,但是在获取特定学院的课程费用时遇到问题。我感到困惑,因为正确的方法是什么?我在一些地方读过,不建议通过模板标记传递参数。我无法找出一种显示方式。
我的模板标签如下所示:
<h3>Courses</h3>
{% for course in college.courses.all %}
<li>
<a href="{{ course.get_absolute_url }}">{{ course.title }}
{{ something here should pull the fee of this course in this college }}
</a>
</li>
{% endfor %}
我的模型如下:
class College(models.Model):
title = models.CharField(max_length=200, unique=True, db_index=True)
slug = models.SlugField(max_length=255, unique=True, db_index=True)
courses = models.ManyToManyField(Course)
publish = models.BooleanField(default=True)
class Course(models.Model):
title = models.CharField(max_length=200, db_index=True)
slug = models.SlugField(max_length=255, unique=True, db_index=True)
publish = models.BooleanField(default=False)
class CollegeSpecificCourseDetails(models.Model):
college =ChainedForeignKey(College)
course = ChainedForeignKey(Course)
monthly_fee = models.IntegerField(max_length=10, blank=True, null=True)
正如@DanielRoseman所说,您确实需要展示您的模型。但这听起来好像让您感到困惑的根源是既有ManyToManyField
介于Course
和之间College
,又有单独的College_Specific_Course_Details
表。如果我对您的理解正确,那么这些都是多余的。而是College_Specific_Course_Details
使用through
关键字创建M2M表。
它可能看起来像这样:
class Course(models.Model):
# some fields
class College(models.Model):
# some fields
courses = models.ManyToManyField(Course,
through='CollegeCourse',
related_name='colleges')
class CollegeCourse(models.Model)
college = models.ForeignKey(College, related_name='college_courses')
course = models.ForeignKey(Course, related_name='college_courses')
fee = models.IntegerField()
然后,您可以像这样进行迭代:
{% for college_course in college.college_courses.all %}
{{ college_course.course.id }}
{{ college_course.fee }}
{% endfor %}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句