1

ほとんどの場合、顧客モデルのフィールドと同じ値を持つ顧客の請求書を作成したいと考えていますが、請求書で 1 つ以上のフィールドを変更する必要がある場合があります。

理解を深めるために、モデルの単純化されたバージョンを次に示します。

class Customer(models.Model):
    name = models.CharField(max_length=50)
    surname = models.CharField(max_length=50)
    email = models.Charfield(max_length=50)

class Invoice(models.Model):
    customer = models.ForeignKey(Customer)
    name = models.CharField(max_length=50)
    surname = models.CharField(max_length=50)
    email = models.Charfield(max_length=50)

顧客管理ページに、ユーザーをリダイレクトする特別なボタンがあります。/admin/sell/invoice/add/?customer=[customer.id]

顧客モデルからの値によって請求書管理のフィールドを事前入力する最良の方法は何ですか? 請求書モデルの管理者は、利用可能な顧客 ID を持っています。

4

1 に答える 1

1

管理ビューを事前設定できるようにするには、管理フォームを次のように変更する必要があります。

class InvoiceForm(forms.ModelForm):
    class Meta:
        model = Invoice

    def __init__(self, *args, **kwargs):
        super(InvoiceForm, self).__init__(*args, **kwargs)
        # get the customer ID somehow
        my_customer = Customer.objects.get(id=CUSTOMER_ID)
        self.initial['name'] =  my_customer.name
        self.initial['surname'] = my_customer.surname
        self.initial['email'] = my_customer.email


class InvoiceAdmin(admin.ModelAdmin):
    form = InvoiceForm
于 2012-08-08T20:38:46.437 に答える