2016-07-22 16 views
0

Djangoのモデル非対称関係

class Author(models.Model): 
    name = models.CharField(max_length=30) 
    bestbookaccordingtome=models.????(Author,null=True, blank=True, default = None) 

class Book(models.Model): 
    title = models.CharField(max_length=100) 
    authors = models.OnetoOneField(Author) 

私はそれぞれの本は1本の著者(のみ)を持つ古典的な関係を求めています。

しかし、私は選択した本を著者に割り当てることもできます(この著者の私の好きな本など)。

私は外来キーを試しましたが、djangoはそれを好まなかったのです。 これを行うには、任意のpythonクリーンな方法?

+0

著者の好きな本のためにユーザーの選択肢をモデル化しようと思えば、このフィールドはユーザーと著者の多対多の関係に存続するはずです。オスカー・ワイルドのあなたの好きな作品は、私にとってはドリアン・グレイの絵でなければなりませんが、Earnestの重要性があるかもしれません。それを得る? –

+0

この場合、私は選択する唯一の人になりますが、ユーザーは自分の言葉を持っていません。ちなみに – LittleBigFrog

+0

それぞれの本に1人の著者しかいない場合は、私は外字を使うべきではないでしょうか? – LittleBigFrog

答えて

0

必要なものはManyToManyFieldです。あなたはN-Mモデルの追加フィールドを指定する必要がある場合

class Author(models.Model): 
    name = models.CharField(max_length=30) 
    bestbookaccordingtome = models.ManyToManyField('self', symmetrical=False, related_name='best_book_according_to_me') 

また、あなたは、モデルの名前を示すためにthroughを使用することができます。

希望すると助かります!

関連する問題