0

使用する次の既存のコードがあります (関連する部分だけを含めました)。

models.py

class Customer(models.Model):
    customer_id = models.CharField(primary_key=True, max_length=16)
    account_phone = PhoneNumberField(null=True, blank=True, max_length=255)
    display_phone = PhoneNumberField(null=True, blank=True, max_length=255)
    .
    .
    .

customer.py

@render_to('customer/edit.html')
def edit(request, customer_id):
    customer = Customer.objects.get(customer_id=customer_id)
    if not request.POST:
        return dict(form=CustomerForm(instance=customer))
    submit = request.POST.copy()
    submit['customer_id'] = customer.customer_id
    form = CustomerForm(submit, instance=customer)
    if not form.is_valid():
        return dict(form=form)
    _f = form.save(commit=False)
    _f.save()

class CustomerForm(ModelForm):
    .
    .
    .
    def __init__(self, *args, **kwargs)
        super(CustomerForm, self).__init__(*args, **kwargs)
        .
        .
    class Meta:
        model = Customer

assigned_numbersから電話番号を取得できるようにするようなクエリを CustomerForm に追加する必要がありaccount_phoneます。クエリを正しく実行する方法に行き詰まっており、提案をいただければ幸いです。さらに情報を提供する必要がある場合は、お知らせください。display_phonecustomer_id

4

1 に答える 1

0

あなたのフォームは のモデル フォームであるため、それらを除外する方法でフィールドを指定しない限り、およびのcustomerフィールドが既に存在します。account_phonedisplay_phone

顧客のインスタンスに応じて入力を開始するフィールドがあるだけでなく、それらを使用して何かをする必要がある場合は、アクセスしform.instance.account_phoneたり、何でもしたりできます。

何らかの理由でより便利な場合は、__init__メソッドでinstancefromにアクセスkwargsして値を検索できます。

def __init__(self, *args, **kwargs)
    super(CustomerForm, self).__init__(*args, **kwargs)
    if 'instance' in kwargs:
        self.assigned_numbers = (instance.account_phone, instance.display_phone)
于 2013-06-13T21:44:17.503 に答える