0
MySQLクエリを作成する必要があります。まずdjango ORMを試してから、最後の手段としてrawを使用します。djangoを使用して2つの左ジョインでSQLクエリを作成する方法ORM
が、私はJOINを単一のドキュメントを見つけたり二つのテーブル間の結合が、何の例または3つのテーブル
間の結合の少なくとも簡単な(初心者賢明な)説明はありませんmodels.pyの内容は
from django.db import models
# Create your models here.
class Threads(models.Model):
name = models.CharField(max_length=100)
author = models.CharField(max_length=100)
date = models.DateTimeField("date published")
slug = models.SlugField()
def __unicode__(self):
return self.name
class Posts(models.Model):
name = models.CharField(max_length=100)
text = models.TextField()
author = models.CharField(max_length=100)
date = models.DateTimeField("date published")
slug = models.SlugField()
def __unicode__(self):
return self.name
class Relations(models.Model):
thread = models.ForeignKey(Threads, related_name = "%(app_label)s_%(class)s_related")
post = models.ForeignKey(Posts, related_name = "%(app_label)s_%(class)s_related")
です
と、これは私が
SELECT forum_threads.id AS t_id, forum_threads.name AS t_name, forum_threads.slug AS t_slug, forum_posts.*
FROM forum_threads
LEFT JOIN forum_relations ON forum_threads.id=forum_relations.thread_id
LEFT JOIN forum_posts ON forum_relations.post_id=forum_posts.id
WHERE forum_threads.slug="<slug_name>"
GROUP BY forum_threads.id
「フォーラム」を構築しようとしている生のSQLクエリーでは、私のアプリ名
です今、モデルを調整したり変更したりする必要があるかどうかわかりません。私のモデルは重要なデータを変更することはできません。
EDIT
は、すべてのあなたの答えをありがとう!
私は様々な例を使って少しずつ演奏しています。
thread = Threads.objects.filter(slug = slug)
posts = Posts.objects.filter(forum_relations_related__thread = thread[0].id)
最初のクエリは、スラグからのスレッドのIDを取得することで2つ目は、そのスレッドIDにスレッド化に関連するすべてのポストを返します。私はこのようにそれを得ました。
少なくとも1つの動作例があるので、私はM2M部品で試してみるつもりです。
OKを経由してスレッドに関連した記事にアクセスすることができスラグ
でスレッドを得ることができます。 ** thread.posts_set.all()**の代わりに、** thread.posts.all()**を使用しました。 ありがとうございます。 – daniyel