このクエリを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
あなたのDjangoのモデルは次のように何を求めますか、そして、あなたのデータベーステーブルの構造は何のようなジャンゴであなたのSQLクエリを書くことができたもの?また、この場合、 'body'と' status_id'とは何ですか? – bouteillebleu
@bouteillebleu私の投稿を編集しています.. – user8991777