2017-11-23 6 views
-4

このクエリをdjango querysetに変換するには?SQLQueryをdjangoクエリに変換する

SELECT body, (SELECT COUNT(status_id) FROM queue WHERE queue.primary_ref_id = messages.Id AND status_id = 2) as count FROM messages 

私はdjangoフレームワークが初めてです。この問題を解決するために私を助けてください..

これは私のキューのモデルである:

class Queue(models.Model): 
possible_action = models.ForeignKey(PossibleActions) 
primary_ref = models.ForeignKey(Message) 
secondary_ref = models.ForeignKey(Contacts) 
status = models.ForeignKey(Statuses) 
created_at = models.DateTimeField(blank=True, null=True) 
updated_at = models.DateTimeField() 

class Meta: 
    managed = False 
    db_table = 'queue' 

def __str__(self): 
    return str(self.possible_action) + str(self.status) + str(self.primary_ref) + str(self.secondary_ref) 

これは私のメッセージモデルです:

: はここに私の検索です:

class Message(models.Model): 
id = models.AutoField(primary_key=True) 
body = models.TextField() 
phone_regex = RegexValidator(regex=r'^\+?1?\d{9,15}$', 
          message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.") 
cell_number = models.CharField(validators=[phone_regex], max_length=15, blank=True) 
received_at = models.DateTimeField(blank=True, null=True) 
created_at = models.DateTimeField(blank=True, null=True) 
updated_at = models.DateTimeField() 
device_id = models.IntegerField() 


class Meta: 
    managed = False 
    db_table = 'messages' 

def __unicode__(self): 
    return str(self.body) + str(self.cell_number) 

更新ソリューション

Message.objects.extra( select={ 'published_entry_count': "SELECT COUNT(status_id) FROM queue WHERE queue.primary_ref_id = messages.Id AND status_id = 2" }, where=["(SELECT COUNT(status_id) FROM queue WHERE queue.primary_ref_id = messages.Id AND status_id = 2) < 1"] ) 

これは私が望むがsti問題は、それが私にすべてのメッセージを表示しないということです。それだけで私に示して、その数は0

+0

あなたのDjangoのモデルは次のように何を求めますか、そして、あなたのデータベーステーブルの構造は何のようなジャンゴであなたのSQLクエリを書くことができたもの?また、この場合、 'body'と' status_id'とは何ですか? – bouteillebleu

+0

@bouteillebleu私の投稿を編集しています.. – user8991777

答えて

-1

であるあなたは、この

Model.object.raw('SELECT body, (SELECT COUNT(status_id) FROM queue WHERE queue.primary_ref_id = messages.Id AND status_id = 2) as count FROM messages') 
+0

モデルとは何ですか? <>エラーが発生します。 – user8991777

+0

更新された回答を参照 –

+0

AttributeError:型オブジェクト 'Model'に属性 'objects'がありません – user8991777

関連する問題