0

この2つのクラスがあると、どちらがそれらを「リンク」するのがベストプラクティスなのか常に疑問があります(もしあれば)

質問

class Question(models.Model):
    text = models.CharField('Question',max_length=120)
    created = models.DateTimeField(auto_now_add=True)
    opens = models.DateTimeField()
    closes = models.DateTimeField()

答え

class Answer(models.Model):
    text =  models.CharField('Answer',max_length=120)
    votes = models.IntegerField(default=0)

間違い -この行を Answer に追加できます(これはコピー/貼り付けエラーでした):

answers = models.ForeignKey(Answer)

編集:

answers = models.ManyToManyField(Answer)

Answer に次の行を追加できます。

question = models.ForeignKey(Question)

それが本当に問題ではないのか、それとも別の側面を考慮する必要があるのか​​ を知りたい.

ありがとう!

4

2 に答える 2

2
class Question: 
    answer = models.ForeignKey(Answer)

「この特定の質問には、可能な答えが 1 つしかありません」。


class Answer: 
    question = models.ForeignKey(Question)

「この回答は特定の 1 つの質問のみに属しますが、その質問には複数の個別の回答がある可能性があります」


class Answer:
    question = models.ManyToManyField(Question)

「この特定の回答は、複数の質問に対する回答です。したがって、質問には複数の個別の回答を含めることができます」


class Question:
    answers = modes.ManyToManyField(Answer)

「この質問には複数の個別の回答があります。回答は複数の質問に属することもあります。」【ベストアプローチ


質問には答えが必要です。複数の質問に答えるために (通常) 回答を作成することはありません。代わりに、回答は 1 つの特定の質問に回答しますが、複数の回答がある場合があります (たとえば、異なるユーザーから)。したがって、私は 4 を選びます。

于 2012-04-05T10:20:12.073 に答える
1
answers = models.ForeignKey(Answer)

question = models.ForeignKey(Question)

これらは同等ではありません。最初のもの (最初のものをオンにする必要があることを意味すると仮定Questionすると、質問には1つの回答しかないが、回答には複数の質問があることを意味します-これはあなたが望むものではないと推測します.

2 つ目は、回答には 1 つの質問があり、質問には複数の回答があり、おそらくあなたが望むものであることを意味します。デフォルトでは、これにより、すべての質問の回答を含む answer_set フィールドが Question に追加されます。

于 2012-04-05T10:19:45.537 に答える