2011-07-30 8 views
0



私は3つのDjangoのモデルクラスがあります。

1.お客様 - 2.

複数の請求先と配送先住所が含まれている住所 - 課金や配送先住所

3.注文することができます - 含まれています1つの顧客、1つの請求先住所、および顧客が選択した1つの配送先住所への参照。

Djangoのモデルとの関係

管理者ページでレンダリングするOrderクラスを作成して、ユーザーが使用する配送先住所を選択できるようにするにはどうすればよいですか?

Addressクラスにはnameというプロパティがあり、ユーザーは "HQ"や "NY Branch"などの短い名前を割り当てることができます。短い名前を使用してユーザーがドロップダウンリストから配送先住所を選択できるようにします。私は遅いnoobです。

UPDATE

CODE

注文モデル:

class Order(models.Model): 
    customer = models.ForeignKey(Customer)   
    shipping_address = models.CharField(max_length=80)// Should be a drop list based on the customer above 
    ... 

カスタマーモデル:

class Customer(models.Model) 
    name = models.CharField(max_length=80)  
    username = models.CharField(max_length=12) 
    password = models.CharField(max_length=12) 
    ... 

    def __unicode__(self): 
     return self.name 

アドレスモデル:

class Address(models.Model): 
    name = models.CharField(max_length=80, help_text='Easy to remember name like "HQ"')  
    customer = models.ForeignKey(Customer) 
    address_type = models.CharField(max_length=12, choices=ADDRESS_TYPES,) 
    street_1 = models.CharField(max_length=100) 
    street_2 = models.CharField(max_length=100) 
    ... 

    def __unicode__(self): 
     return self.name 

ありがとうございました! the docsから

答えて

0

モデルの__unicode__方法は、フィールドの選択で使用するためのオブジェクトの文字列表現を生成するために呼び出されます...

ので、override Address.__unicode__()

+0

理論的には、私はOrderクラスでこのようなことをしたい: 'address = models.OneToManyField(customer.Address.all())。何か案は? –

+0

いいえ、そうしたくありません。多対多の関係が必要な場合は、複数の注文で住所を使用することはできません。 –

0

がこの質問を見て試してみてください。

How to work with dynamic data in Admin Panel?

django ForeignKey model filter in admin-area?

私は、彼らがあなたの質問に非常に似ていると思います。必要なのはadmin.pyのアドレスモデルから選択肢を設定するだけです。

+0

あなたの提案が問題の解決策になるかもしれません。しかし、OrderオブジェクトがAddressオブジェクトと直接の関係を持たないため、問題が発生しています。 Orderクラスのcustomerフィールドで参照されるcustomerオブジェクトのアドレス名のみを表示するフォームが必要です。 –

+0

standart Djangoツールでこのようなことをしたい場合は、フィールドをManyToMany/ForeignKeyに変更する必要があります。ドロップダウンの自動選択メニューを使用する場合は、django-ajax-selectを見てください。このドロップダウンメニューにカスタム情報を表示する方法があります...これは私のために働く自動選択ウィジェットだけです。 – Dracontis

関連する問題