2016-09-06 6 views
2

私はdjango-adminパネルに関する小さな問題があります。 は、私は2つのモデルがあります:django-adminに外部キーの選択肢を表示するには?

from django.db import models 

class Subject(models.Model): 
    subject = models.CharField(max_length=30, choices=[('P', 'Personal'), ('W', 'Work')]) 

    def __str__(self): 
     return self.subject 

class BlogPost(models.Model): 
    id = models.AutoField(unique=True, primary_key=True) 
    subject = models.ForeignKey(Subject, on_delete=models.CASCADE) 
    text = models.TextField(null=False) 
    pic = models.ImageField(upload_to='static/img/', default='static/img/no-image.png') 
    date = models.DateTimeField() 

    def __str__(self): 
     return self.subject 

をしかし、私はブログの記事を作成しようとするたびに管理パネルで、ドロップダウンメニューには、対象者の選択肢のいずれかを示していません。私は管理者のレンダー機能を編集する必要がありますか?

答えて

2

あなたがそれをやったやり方では、あなたが外来のキーの選択肢に現れるように、まず自分自身を追加する必要があります。同じ結果を得ることができます:

class BlogPost(models.Model): 
    id = models.AutoField(unique=True, primary_key=True) 
    subject = models.CharField(max_length=30, choices=[('P', 'Personal'), ('W', 'Work')]) 

    def __str__(self): 
     return self.subject 

あなたは何のためにForeignKeyをしますか?

+1

ええ、そうです。あなたの選択ははるかに簡単です。ありがとう! – Disciples

+0

しかし、考えてみましょう。あなたは管理パネルから件名を追加し、これを投稿した被験者に設定することができます。新しい主題を作るために、私は悲しいことにそれをハードコーディングする必要があります。 – Disciples

+1

それでは、最初のモデルに固執する必要がありますが、選択肢のパラメータを対象から削除する必要があります。サブジェクトを追加すると、BlogPostの外部キーが自動的に作成されたサブジェクトのドロップダウンとして表示されます –

関連する問題