![](/img/trans.png)
[英]How to use order_by with last_added manytomanyfield?
[英]How to set order_by only on ManytoManyfield in detailview (Django)?
我有 2 個模型Class
和Student
。 Class
mdel 中的一個ManytoManyField
與Student
具有ManytoManyField
關系。 我想在模板中使用first_name
訂購 manytomanyfield。 我該怎么做?
模型.py
class Student(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, primary_key=True)
first_name = models.CharField(max_length=100)
class Class(models.Model):
student = models.ManyToManyField(Student)
subject = models.CharField(max_length=150, unique=True)
# many other fields
視圖.py
class Class_detailView(LoginRequiredMixin, DetailView):
login_url = '/'
model = Class
template_name = "attendance/content/teacher/class_detail.html
模板
<div class="row ml-auto mr-auto">
<h6>{{ object.subject }}</h6>
{% for student in object.student.all %}
<h6 id="class-detail-text" class="mt-2">
{{student.first_name}} <-- want to order here
</h6>
{% endfor %}
</div>
現在名稱呈現如下:
Freaky Albon Bucky
我希望它這樣訂購:
Albon Bucky Freaky
在模型元中設置ordering
class Student(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, primary_key=True)
first_name = models.CharField(max_length=100)
class Meta: ordering = ('first_name',)
您可以只覆蓋視圖的queryset
屬性。 如果您始終希望在訪問它時進行排序,您還可以使用Student
模型的Meta
屬性。
from django.db.models import Prefetch
class Class_detailView(LoginRequiredMixin, DetailView):
queryset = Class.objects.prefetch_related(Prefetch('student', queryset=Student.objects.order_by('name'))
login_url = '/'
model = Class
template_name = "attendance/content/teacher/class_detail.html
請參閱有關prefetch_related
文檔: https : //docs.djangoproject.com/en/3.1/ref/models/querysets/#prefetch-related
順便說一句,通常ManyToManyField
的是多元狀態,因此考慮將其更改為students
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.