HTML选择POST Django

问题描述 投票:0回答:2

你好,我是Django新手。

我有一个看起来像这样的模型。

Models.py

class CustomUser(AbstractUser):
pass

first_name = models.CharField(max_length=100)
last_name = models.CharField(max_length=100)

def __str__(self):
    return self.username

class Campus(models.Model):
    name = models.CharField(max_length=50)

    def __str__(self):
        return self.name

class Intervention(models.Model):
    subject = models.CharField(max_length=200)
    begin_date = models.DateField(default=datetime.datetime.today)
    end_date = models.DateField(default=datetime.datetime.today)
    description = models.TextField(blank=True)
    speaker = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
    campus = models.ForeignKey(Campus, on_delete=models.CASCADE)
class Meta:
    verbose_name = 'Intervention'
    verbose_name_plural = 'Interventions'

def __str__(self):
    return self.subject

class Evaluation(models.Model):
    interventions = models.ForeignKey(Intervention, on_delete=models.CASCADE)
    student_id = models.CharField(max_length=20)
    speaker_knowledge_mark = models.IntegerField(validators=[MaxValueValidator(20), MinValueValidator(0)])
    speaker_teaching_mark = models.IntegerField(validators=[MaxValueValidator(20), MinValueValidator(0)])
    speaker_answer_mark = models.IntegerField(validators=[MaxValueValidator(20), MinValueValidator(0)])
    slide_content_mark = models.IntegerField(validators=[MaxValueValidator(20), MinValueValidator(0)])
    slide_examples_mark = models.IntegerField(validators=[MaxValueValidator(20), MinValueValidator(0)])
    comment = models.TextField(blank=True)

    class Meta:
        verbose_name = 'Evaluation'
        verbose_name_plural = 'Evaluations'

所以,基本上我想做的是在主页上,我希望有一个选择框,学生必须在其中选择校园,然后他将被重定向到一个新页面,在其中他只能看到属于您的干预措施到他选择的校园

我的主页看起来像这样:

“首页屏幕截图”

<form method="post" action="/Mark/"/>
    <select name="campus_id">
      <option value="" disabled selected>Choose your Campus</option>
      {% for camp in campus %}
      <option value="camp.pk">{{ camp.name }}</option>
      {% endfor %}
    </select>
    <input type="submit" />
  </form>

我尝试了几件事,但没有成功:/如果有人可以帮助或给我提示。

谢谢。最好的问候。

python django forms orm materialize
2个回答
0
投票

您可以尝试这样

您选择的校园将是:

campus = Campus.objects.get(pk=pk)

现在校园的related_intervention将是:

intervention = campus.intervention_set.all()

或者,您也可以像这样过滤Intervention模型。

Intervention.objects.filter(campus=campus)

0
投票

我建议您有一个清晰的想法并定义流程:

  • 您有一个显示用于选择校园的表单的视图(或者,您可能具有链接列表)
  • 创建显示干预表(列表)的视图(ListView)
  • 使用校园模型中的选项创建Django表单
  • 将处理此表单的视图(FormView)将获得所选值,并使用提供的值(id)重定向到另一个视图。
  • [由干预显示视图(ListView)提供的列表项,由各自的校园ID过滤(get_queryset)
© www.soinside.com 2019 - 2024. All rights reserved.