ich bin gerade dabei eine kleine Anwendung auf Django umzustellen.
Ich muss ehrlich zugeben, dass ich das ORM-System, vor allem den Syntax, sehr gewöhnungsbedürftig finde. Obwohl ich schon eine Weile mit Django herum spiele werde ich damit irgendwie nicht warm.
Ich würde gerne folgende Query in Django abbilden:
Code: Alles auswählen
SELECT member.name, member.description, SUM(task.value) AS valuesum
FROM contrib LEFT JOIN member ON (contrib.member = member.id)
LEFT JOIN task ON (contrib.task = task.id)
WHERE contrib.done >= "01.01.2011"
GROUP BY member.name, member.description
ORDER BY valuesum;
Code: Alles auswählen
class Member(models.Model):
name = models.CharField(max_length = 50)
description = models.TextField()
class Task(models.Model):
name = models.CharField(max_length = 50)
description = models.TextField()
value = models.IntegerField()
class Contrib(models.Model):
member = models.ForeignKey(Member)
task = models.ForeignKey(Task)
done = models.DateField()
Code: Alles auswählen
>>> from psystem.psys.models import Contrib
>>> from django.db.models import Sum
>>> test = Contrib.objects.all().aggregate(total=Sum('task.value'))
FieldError: Cannot resolve keyword 'task.value' into field. Choices are: done, id, member, task
Kann mir da jemand auf die Sprünge helfen?
Gruß
Sparrow