【问题标题】:Django loop through model choicesDjango 循环选择模型
【发布时间】:2019-11-12 01:59:57
【问题描述】:

这是我正在使用的基本代码:

https://github.com/justdjango/video-membership/tree/master/courses

3 个主要文件:

  1. models.py
  2. views.py
  3. 模板/course_list.html

但我在 models.py 中添加了更多功能,以包含技能级别和具有模型选择的主题:

class Subject(models.Model):
    SUBJECT_CHOICES = (
        ('tech', 'Technical'),
        ('bus', 'Business'),
        ('lead', 'Leadership'),
    )
    name = models.CharField(max_length=20,choices=SUBJECT_CHOICES, unique=True)

    def __str__(self):
        return self.name

class Skill_level(models.Model):
    SKILL_LEVEL_CHOICES = (
        ('Begin', 'Beginner'),
        ('Interm', 'Intermediate'),
        ('Adv', 'Advanced'),
    )
    name = models.CharField(max_length=20,choices=SKILL_LEVEL_CHOICES, unique=True)

    def __str__(self):
        return self.name

class Course(models.Model):
    slug = models.SlugField()
    title = models.CharField(max_length=120)
    description = models.TextField()
    allowed_memberships = models.ManyToManyField(Membership)
    created_at = models.DateTimeField(auto_now_add=True)
    subjects = models.ManyToManyField(Subject)
    skill_level = models.ManyToManyField(Skill_level)
    visited_times = models.IntegerField(default=0)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('courses:detail', kwargs={'slug': self.slug})

    @property
    def lessons(self):
        return self.lesson_set.all().order_by('position')

我最终想要做的是循环遍历主题和技能级别,以便可以在下拉菜单中使用循环结果,以便用户可以搜索/过滤特定主题的课程或特定技能水平的课程。但是现在我想让下拉表单填充选项。

示例结果:

https://imgur.com/a/YKhORP9

如果有人可以提供一些可以实现此目的的代码,我将不胜感激。

【问题讨论】:

  • StackOverflow 不是代码编写服务,请告诉我们您尝试了什么,请仅在帖子中显示代码,而不是来自图像
  • @LinhNguyen 好吧,对不起,我在这里尝试关注这个类似的问题 -> stackoverflow.com/questions/11242290/… 但我没有任何运气试图让它与我的代码一起工作。你能帮忙吗?
  • 您好,未成年人欢迎来到 stackoverflow,请不要在类似 pastebin 的服务上发布代码。请务必将您的代码放入问题中,一旦您尝试自己解决问题并陷入困境,我们可以指导您如何解决。请阅读 How to Ask 上的 stackoverflow 指南。
  • @BagusTesa 好的,谢谢,我编辑了问题以包含代码。

标签: python django django-models


【解决方案1】:
class Skill_level(models.Model):
    choices = models.CharField(max_length=25)

    def __str__(self):
        return self.choices

class Course(models.Model):
    skill_level = models.ForeignKey(Skill_level, on_delete= ....)

您可以尝试这种方式,它会在您的表单中显示为下拉菜单。

【讨论】:

  • 抱歉,但不确定如何实现。现在我不想使用一个表格,我只想列出图片显示的选项。
猜你喜欢
  • 2014-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-28
  • 2013-09-28
  • 2019-01-30
  • 1970-01-01
相关资源
最近更新 更多