【发布时间】:2014-06-20 06:26:06
【问题描述】:
我有两个类 - Arzt 和 Fachbereich - 通过 ArztFachbereich 以多对多关系相关。
class Fachbereich(FachbereichUndArztFachbereiche):
name = models.CharField(unique=True, max_length=100)
class Arzt(models.Model):
name = models.CharField(max_length=500)
fachbereich = models.ManyToManyField(Fachbereich, through="ArztFachbereich")
class ArztFachbereich(FachbereichUndArztFachbereiche):
arzt = models.ForeignKey(Arzt)
fachbereich = models.ForeignKey(Fachbereich)
note = models.FloatField()
我知道如何获得按 Arzt 的最小注释排序的结果。
Arzt.objects.annotate(best_note=Min("arztfachbereich__note")).order_by("best_note")
但接下来我首先通过 Fachbereich-ID (fb_id) 过滤 Arzt。现在我不需要最低限度的注释或聚合的东西,而是这个特定的 ArztFachbereich 的注释。
澄清我在说什么: 像这样的东西......但我不知道如何在 django 中做到这一点。
aerzte = Arzt.objects.filter(fachbereich=fb_id)
aerzte.order_by("arztfachbereich__note"
WHERE arztfachbereich__fachbereich ==
Fachbereich.objects.get(id=fb_id))
或者我想到的另一种方式:
aerzte = Arzt.objects.filter(fachbereich=fb_id)
aerzte.annotate(specific=ArztFachbereich.objects.get(arzt=self, fachbereich__id=fb_id)
aerzte.order_by("specific")
但我显然无法通过自我声明访问 arzt...
【问题讨论】:
标签: django django-orm django-filter