我正在尝试从我的数据库中获取数据并在模板中显示结果。但是,不显示结果。网站上的结果是:“原始查询必须包含主键”。这是我的代码:
这是我在视图中的代码:
class EventListView(ListView): context_object_name = "events" template_name = 'core/event_detail_list.html' def get_queryset(self): queryset = Event.objects.raw("""select name, date from classroom_event""") return queryset
这是我在模板中的代码(event_detail_list.html):
{% extends 'base.html' %} {% block content %} <tbody> {% for event in queryset %} <tr> <td class="align-middle">{{ event.name }}</td> <td class="align-middle">{{ event.date }}</td> </tr> {% empty %} <tr> <td class="bg-light text-center font-italic" colspan="5">You haven't created any events yet.</td> </tr> {% endfor %} </tbody> {% endblock %}
我的模型如下所示:
class Event(models.Model): owner_events = models.ForeignKey(User, on_delete=models.CASCADE, related_name='events') name = models.CharField(max_length=30) date = models.DateTimeField(default=timezone.now) def get_absolute_url(self): # defekt return reverse('event_detail', kwargs={'pk': self.pk}) return self.name def get_event(self): name = escape(self.name) date = escape(self.date) return "Name: " + str(name) + " Datum: " + str(date) class User(AbstractUser): is_student = models.BooleanField(default=False) is_teacher = models.BooleanField(default=False) class Teacher(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True) interests = models.ManyToManyField(Subject, related_name='interested_teachers') events = models.ManyToManyField(Event, related_name="teacher_events") def __str__(self): return self.user.username def get_events(self): return "Name: " + str(self.events.name) + "Datum: " def get_events_adr(self): return self.events def get_interests(self): return "Interests: " + str(self.interests.name) class Student(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True) quizzes = models.ManyToManyField(Quiz, through='TakenQuiz') interests = models.ManyToManyField(Subject, related_name='interested_students') events = models.ManyToManyField(Event, related_name="student_events") def get_unanswered_questions(self, quiz): answered_questions = self.quiz_answers \ .filter(answer__question__quiz=quiz) \ .values_list('answer__question__pk', flat=True) questions = quiz.questions.exclude(pk__in=answered_questions).order_by('text') return questions def __str__(self): return self.user.usernames
事件表如下所示: 在此处输入图像描述
有谁知道,如何将查询集结果显示到模板中?