2017-12-07 5 views
1
class Task(models.Model): 
    subject = models.CharField(max_length=256) 
    description = models.TextField(max_length=1024) 
    reward = models.PositiveIntegerField() 
    begin_date = models.DateField() 
    number_of_people = models.PositiveIntegerField(default=1) 

class TaskDetail(models.Model): 
    user = models.ForeignKey(User, related_name='tasks') 
    task = models.ForeignKey(Task, related_name='tasks') 

これは私によって設計された簡単なタスク割り当てシステムモデルです。 と私は質問があります。タスクのユーザー数を含むユーザーレポートを作成しようとしました。しかし、ORMクエリの作成方法はわかりません。Django製ORMクエリ

誰もこの問題を解決する方法を知っていますか? Thx

答えて

0

のは、あなたがid=1を持つユーザーが達成したタスクをカウントしようとしていると仮定しよう。

ここに該当するdocsです。

しかし、あなただけの、これは完全なレイアウト - である-ifつのテーブルを使用してManyToManyFieldとして表TaskuserForeignKeyを置くことができます。

ユーザーが作成した方法では、ユーザーがタスクを自分自身に割り当てるのを忘れてしまったため、迷子になってしまう可能性があります。

し1.Get

users = User.objects.get(username = "jack" and email= "[email protected]") 

ノート

+0

を使用することはできませんgetjack

が、所有者名を持っているあなたのポストの数が表示されます私は自分でのManyToManyFieldを実装しようとするでしょうmodels.py、どうもありがとう〜 – Tom

0

モデルではrelated_nameuserとする必要はありません。 foreign_keyを使用すると、別のクエリを作成する必要はありません。あなたは、チェーンの概念を使用することができます。

users = User.objects.all() 
task_details = TaskDetail.objects.filter(user=users) 
for task_detail in task_details: 
    subject = task_detail.task.subject 
0

あなたは、2ウェイ(一部diffrentsを持っている)してこれを行うことができ、この例では、我々はusernamepasswordフィールド

を持っています

2.filter

users = User.objects.filter(username = "jack") 

違いfilter使用中の

を使用でき.exists().count()または.first()または.last()(および他のいくつかのquerys)exmapleため

posts_count = Post.objects.filter(owner="jack").count() 

itあなたが.exists().count()または.first()または.last()(および他のいくつかのquerys)