gpt4 book ai didi

django - 在模板中扩展 ManyToManyField

转载 作者:行者123 更新时间:2023-12-04 07:19:25 25 4
gpt4 key购买 nike

我需要创建一个有一些选项的 manytomany 字段,然后在每个选项旁边有一个额外的字段
我的模型:

class Subject(models.Model):
name = models.CharField(max_length=30)
duration = models.IntegerField()
price = models.IntegerField()

class Student(models.Model):
firstname = models.CharField(max_length=30)
lastname = models.CharField(max_length=30)
subject = models.ManyToManyField(Subject,through="StudentSubject")

class StudentSubject(models.Model)
student = models.ForeignKey(Student,on_delete=models.CASCADE)
subject = models.ForeignKey(Subject,on_delete=models.CASCADE)
discount = models.IntegerField()
我使用了中间模型 StudentSubject(它包含额外的字段),但我不确定我应该如何在模板中呈现它,我想做这样的事情:
Math DiscountField1
Physics DiscountField2
CompSci DiscountField3

最佳答案

您可以枚举StudentSubject所以对于学生来说,你可以:

{% for studentsubject in mystudent.studentsubject_set.all %}
{{ studentsubject.subject.name }} {{ studentsubject.discount }}
{% endfor %}
mystudent ,您为其列出具有相应折扣的科目的学生。
您可以通过在 View 中预取和选择相关对象来提高效率,因此:
from django.db.models import Prefetch
from django.shortcuts import render

def my_view(request, pk):
qs = Student.objects.prefetch_related(
Prefetch(
'studentsubject_set',
queryset=StudentSubject.objects.select_related('subject')
)
)
mystudent = get_object_or_404(qs, pk=pk)
# …
return render(request, 'some-template.html', {'mystudent': mystudent})

关于django - 在模板中扩展 ManyToManyField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68596705/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com