2017-02-20 14 views
0

私はOneToOneField Relationshipで接続された2つのモデルを持っています。これは、彼らがどのように見えるかです:Django AdminでOneToOne関係をフォーマットするには?

class UserText(models.Model): 
    user_input = models.CharField(max_length=2000) 

class Question(models.Model): 
    user_text = models.OneToOneField(
     UserText, 
     on_delete=models.CASCADE, 
     blank=True, 
     null=True, 
    ) 
    user_questions = models.CharField(max_length=2000) 

私は、データベース内でそれに接続された質問モデルを持っている各UserTextをしたいと思います。これが私がOneToOne関係を使用した理由です。ここから私は自分のadmin.py内でこの関係を表現する方法を知らないので、管理者から自分のデータベースを見ると、それぞれのUserTextモデルに接続された質問が表示されるようになります。これは、今のようにどのような私のadmin.pyの外観です:

from django.contrib import admin 
from v2.models import UserText 
from v2.models import Question 

@admin.register(UserText) 
class UserTextAdmin(admin.ModelAdmin): 
    model = UserText 
    display = ('user_input') 

@admin.register(Question) 
class QuestionAdmin(admin.ModelAdmin): 
    model = Question 
    display = ('user_questions') 

私はすべての質問モデルは、それが親UserTextモデルがOneToOneの関係を通じてだに接続されているように、私のadmin.pyに追加または変更する必要がありますか?

+1

私は信じている[この質問](http://stackoverflow.com/questions/16070809/how-to-i-show-a-list-of-foreignkey-reverse-lookups-in-the-django-admin-インターフェイス)は、あなたにとって有用なアプローチをとっているかもしれません。 – Neelik

+1

@Neelikこれは正しい方向に私を指しています、ありがとう。私はここからそれを持っていると思う! – jblew

答えて

0

あなたは正しい関連分野を呼び出す必要があります。

あなたが質問管理インタフェース内にある場合は、フォームにuser_textを追加する必要があります。

@admin.register(Question) 
class QuestionAdmin(admin.ModelAdmin): 
    ... 
    fields = ('user_text', ...) 

あなたはUserText管理インタフェース内にある場合は、inlines使用することができます:ところで

class QuestionInline(admin.TabularInline): 
    model = Question 

@admin.register(UserText) 
class UserTextAdmin(admin.ModelAdmin): 
    ... 
    inlines = [QuestionInline, ] 

を、OneToOneFieldは、言い換えれば、各ユーザが一つだけ疑問を持つことができ、unique=TrueForeignKey同様です。ユーザーが複数の質問をすることができる場合は、ForeignKeyに切り替える必要があります。

+0

私はインラインアプローチを使用していました。それぞれのUserTextに複数の質問が関連しているようにしたいのですが、 'ForeignKey'を使うとインライン管理コードの変更が必要になるのですか? – jblew

+0

いいえ、ModelフィールドをForeignKeyに更新するだけです。 –

+0

よろしいですか。だから今、それぞれの質問をUserText Admin Interfaceの 'OneToMany'質問インスタンスの1つに割り当てたいと思っています。今、管理者は、UserTextごとに複数の質問フィールド「StackedInline」を表示します。ここから、各質問を個々の「インライン」フィールドにどのように追加しますか? – jblew

関連する問題