views.py
Python
1q1 = TestMaster.objects.filter(id=1).values( 2 'id', 'date_start', 'date_finish', 'user_id', 'user_id__last_name', 'user_id__first_name')
test_master.py (Model)
Python
1class TestMaster(models.Model): 2 class Meta: 3 db_table = 'test_master' 4 5 id = models.AutoField(primary_key=True) 6 #..省略 7 user_id = models.ForeignKey(UserMaster, db_column='user_id', on_delete=models.CASCADE, related_name='user')
user_master.py (Model)
Python
1class UserMaster(models.Model): 2 class Meta: 3 db_table = 'user_master' 4 5 user_id = models.CharField(db_column='user_id', max_length=30, primary_key=True) 6 last_name = models.CharField(db_column='last_name', max_length=30) 7 first_name = models.CharField(db_column='first_name', max_length=30)
querysetなどは問題なく取得できているのですが、毎回毎回カラムを全て書いていてはコードが冗長になってしまうなと感じています。
(この部分)⇒.values('id', 'date_start', 'date_finish', 'user_id', 'user_id__last_name', 'user_id__first_name')
どうにか 変数に格納するなどして簡潔に記載する方法 などありますでしょうか。
加えて、Django での「*」の書き方(TestMaster.*) なども分からず、
そんなカラム名ないよーと怒られてしまいます。
お時間ある方で解決方法等お心当たりがある方いらっしゃいましたらご助力頂けますと幸いです。
やってみたこと①(冗長回避編)
Python
1value = ('id', 'date_start', 'date_finish', 'user_id', 'user_id__last_name', 'user_id__first_name') 2q1 = TestMaster.objects.filter(id=1).values(value) 3 4# 結果:'tuple' object has no attribute 'split' 5 6value = ['id', 'date_start', 'date_finish', 'user_id', 'user_id__last_name', 'user_id__first_name'] 7q1 = TestMaster.objects.filter(id=1).values(value) 8 9# 結果:'list' object has no attribute 'split' 10 11value = "id, date_start, date_finish, user_id, user_id__last_name, user_id__first_name" 12q1 = TestMaster.objects.filter(id=1).values(value) 13 14# 結果:Cannot resolve keyword "id, date_start, date_finish, user_id, user_id__last_name, user_id__first_name"
やってみたこと②(全カラム指定編)
Python
1q1 = TestMaster.objects.filter(id=1).values('TestMaster.*', 'user_id__last_name', 'user_id__first_name') 2 3# 結果:Cannot resolve keyword 'TestMaster.*' into field. 4 5q1 = TestMaster.objects.filter(id=1).values('*', 'user_id__last_name', 'user_id__first_name') 6 7# 結果:Cannot resolve keyword '*' into field.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/10/28 08:14