すべてのクライアントの最新のタスクレコードであるタスクオブジェクトのリストを作成します。次に、このリストを使用して、タスクリスト内の各オブジェクトの辞書リスト(クライアント、いくつかのtask_values、および日付を指定する)を作成します。この時Djangoを使用して一意のFKと最新のタイムスタンプを持つオブジェクトのリストを作成
class Client(models.Model):
user_name = models.CharField
class Task(models.Model):
client = models.ForeignKey('Client',)
task_type = models.ForeignKey('Task_Type',)
timestamp = models.DateTimeField(default = datetime.now(), blank = True, null = True,)
class Task_Type(models.Model):
name = models.CharField(
max_length = namelen,
unique = True,
)
class Task_Value(models.Model):
value_char = models.TextField
task = models.ForeignKey('Task',)
field = models.ForeignKey('Task_Field')
私の試みは、このようなものを見て:私はこのようになりますモデル持って
task_objs=Task.objects.filter(client__in=client_list, task_type=1).distinct().order_by('-timestamp')
task_dict = [{task_obj[x].client.pk:task_obj[x].task_value_set.get(field__name__exact='ABC').value_char} for x in range (0,len(client_list),1)]
をしかし、これは私のすべてのクライアントおよびタイムスタンプの組み合わせ(そのすべてのレコード)のための明確な記録を提供します。だから2つの質問、どのように私はクライアントの最新のレコードは、各クライアントの個別のレコードを取得するのですか? 2つは、私がtask_dictを取得するために説明したものよりも全体的に優れたメソッドですか?
私は 'Task.task_type'の下に' ForeginKey'の代わりに 'ForeignKey'と' Task_Type.name'の2つのタイプミスがあります。 'CharField'は'(some_num) (それを別々にインスタンス化しない限り)。これらがコード内に存在する場合は、最初に修正してから、再実行してみてください。 – Edwin
あなたは 'values'を見ましたか? https://docs.djangoproject.com/en/dev/ref/models/querysets/#values辞書のクエリセットを返します。 – dm03514
値の制限は、モデルに帰属する値に制限されていることです。結果の1つとして別のテーブルを照会することはできません。私がこれに間違っていると、どう見えるでしょうか? –