私は以下のようなモデルを持っています:
class ProjectRecord(models.Model):
user = models.ForeignKey(User,on_delete=models.CASCADE, null=True, blank=True,related_name='user_projects')
project = models.ForeignKey(Project,on_delete=models.CASCADE, null=True, blank=True, related_name='user_projects')
project_type = models.CharField(max_length=30, choices=(("project_a","A"),("project_b","B")),null=True)
version = models.FloatField(null=True, blank=True)
これでバージョンの最新の値をフィルタリングしたい:
project = list(ProjectRecord.objects.filter(
user=self.request.user, project_type='project_a'
))
しかし、それを達成する方法がわかりません。データベース内のデータは以下のようになります。
id project_id version project_type
1 5 1.0 project_a
2 5 1.0 project_b
3 4 1.0 project_a
4 4 1.0 project_b
5 5 2.0 project_a
6 5 2.0 project_b
7 5 3.0 project_a
8 5 3.0 project_b
たとえば、project_id=5
他のデータと完全に一致するの最新の値を取得しproject_id
、バージョンが更新されていない場合は他の の値を削除しないようにしたい場合、次のqueryset
ように表示されるはずです。
id project_id version project_type
1 4 1.0 project_a
2 4 1.0 project_b
3 5 3.0 project_a
4 5 3.0 project_b