0

わかりました、その質問は紛らわしかったと思います。次のモデルがあるとします。

class Phone(models.Model):
    serial = models.CharField(max_length=13, unique=True)
    model = models.CharField(max_length=4, choices=MODELOS)

class Contract(models.Model):
    number = models.IntegerField()
    phone = models.OneToOneField(Phone)
    notes = models.TextField(blank=True, null=True)
    sign = models.BooleanField(default=False)

これらのモデルのすべてのフィールドに入力できるフォームを作成する必要があります。1 つのページで、電話のシリアル番号とモデル、契約番号、メモ、署名を指定する必要があります。電話フィールドは、同時に作成されたものである必要があります。どうすればこれを行うことができますか?

ありがとうございました!

4

1 に答える 1

1

ilvarが示唆するように、2 つのモデルフォームを定義します

class PhoneForm(forms.ModelForm):
    class Meta:
        model = Phone

class ContractForm(forms.ModelForm):
    class Meta:
        model = Contract
        exclude = ('phone',)

def add(request):
   ...
   if request.method == 'POST':
       phone_form = PhoneForm(request.POST)
       contract_form = ContractForm(request.POST)
       if phone_form.is_valid() and contract_form.is_valid():
           phone = phone_form.save()
           contract = contract_form.save(commit=False)
           contract.phone = phone
           contract.save()
   ...

OneToOneFieldまた、とにかく、代わりにForeignKeyorを使用する理由に興味がありますManyToManyField

于 2012-04-29T08:25:55.410 に答える