2017-11-14 6 views
1

外国人のキーがPaymentに、onetoneがAddressになるアカウントモデルをdjangoに持っています。django adminモデル編集フォーム - foreignkeyを関連するモデルのみにフィルタリングする方法

管理者の[アカウント]セクションで、特定のモデルを編集し、選択ウィジェットを使用してpaymentaddressフィールドを編集できます。しかし、関連するモデルのみを表示するようにオプションをフィルタリングするにはどうすればよいですか。 (つまり、すべてのアドレスまたは支払いはすべてのユーザーからではなく、そのユーザーからのもののみ)。

RelatedOnlyFieldListFilterはモデルリストビューにのみ適用されるようです。モデル編集ビューでこれを使用する方法はありますか?

答えて

0

お探しのものはinlinesです。この場合、親モデルのフォームで直接関連オブジェクトを編集することができます。この場合、Accountモデルになります。ここでは、実装の一例である:これは完全な実装ではありません(両方のインラインを構築する必要があります)、詳細についてはインラインのドキュメントに従うが、上記のそれに基礎であることを

class Account(models.Model): 
    name = models.CharField(max_length=100) 

class Payment(models.Model): 
    account= models.ForeignKey(Account, on_delete=models.CASCADE) 
    amount= models.CharField(max_length=100) 

class Adress(models.Model): 
    account= models.OneToOneField(Account, on_delete=models.CASCADE) 
    adress= models.CharField(max_length=100): 

class AccountAdmin(admin.ModelAdmin): 
    inlines = [ 
     Paymentinline, 
     Adressinline, 
    ] 

注意。

+0

ありがとうございますが、その関係は逆です。口座には複数の支払いオプションがあり、onetoone関係は住所ではなくアカウントで定義されています。私はそれらを完全に編集する必要はありませんが(それでも問題ありません)、アカウントに関連付ける支払い(ただし、そのユーザーの支払いはすべてのユーザーの支払い方法ではありません)のみを再選択してください。 – Yunti

関連する問題