2010-12-02 7 views
0

これは私がCharFieldですのForeignKeyはIDを返します

class CategoryForm(forms.ModelForm): 
    title = forms.CharField(label = "Title") 
    class Meta: 
     model = Category 

class CategoryAdmin(admin.ModelAdmin): 
    form = CategoryForm

私のタイトルモデル

class Title(models.Model): 
    title = models.CharField("Title", max_length=200) 

    def __unicode__(self): 
     return self.title
でForegnKeyフィールドを置き換えるために、フォームを使用してい

class Category(models.Model): 
    title = models.ForeignKey(Title, verbose_name="Title") 
    class Meta: 
     ordering = ['title'] 
    def __unicode__(self): 
     return self.title.title

私のモデルであり、

カテゴリを追加して表示するとすべてうまく動作しますが、カテゴリを編集しようとすると、タイトルフィールドにForeignKey IDが表示されます。私はそれをタイトル文字列にしたい。それを行うには?

は、私は、このソリューションをチェックしていなかった(私は今テストアプリケーションを作成することはできません)、私はそれが動作することを確認しないで非常に多くの

+0

ありがとう?なぜカテゴリーだけでなく、models.CharFieldのタイトル? –

+0

タイトルフィールドは単なる例です。私はそれを他のアプリケーションで使用するため、外部キーとして使用しています。モデルにはもっとコードがありますが、私は本質的なものを送っただけです。ありがとうございました – bnabilos

答えて

0

タイトルをユニークにし、to_fieldオプションを自分のカテゴリクラスのForeignKeyに追加することで、それを修正しました。これはコードです:

class Title(models.Model): 
    title = models.CharField("Title", max_length=200, unique=True) 

    def __unicode__(self): 
     return self.title
class Category(models.Model): 
    title = models.ForeignKey(Title, verbose_name="Title", to_field='title') 

    class Meta: 
     ordering = ['title'] 

    def __unicode__(self): 
     return self.title.title

はあなただけで一つのフィールドでタイトルモデルを持っていないのはなぜ

0

、ありがとうございました。

exclude = ("title",)をCategoryFormメンバーとして追加してください。また、CategoryFormのsave()(そしておそらく他の)メソッドをオーバーライドする必要があります。

関連する問題