1

インラインフォームセットをレンダリングしようとしていますが、「extra」属性が無視されているようです。次のモデルを検討してください。

 class Foo_model(models.Model):     
     fooName = models.CharField(max_length=LIL_STRING)
     bars    = models.ForeignKey("Bar_model")

 class Bar_model(models.Model):     
     barName = models.CharField(max_length=LIL_STRING)

フォーム:

 class Foo_form(ModelForm):    
     class Meta:
         model = Foo_model

 class Bar_form(ModelForm):    
     class Meta:
         model = Bar_model

 Bar_formset = inlineformset_factory(Foo_model,Bar_model,formset=Bar_form,extra=23)

見る:

 def ViewFoo(request, model_id=False):
     if model_id:                  
         model = Foo_model.objects.get(pk=model_id)
     else:
         model = Foo_model()

     form = Foo_form(instance=model)    
     formset = Bar_formset(instance=model)

     return render_to_response('form.html', {'form' : form, 'formset' : formset }, context_instance=RequestContext(request))

およびテンプレート:

 <html>
   <form method="POST" action="">
     {% csrf_token %}
     <div>
       {{ form }}
       {{ formset }}
     </div>
     <input class="button" type="submit" value="Submit"/>
   </form>
 </html>  

これは、23( "extra = 23")を表示する必要があるときに、Bar_formの1つのインスタンスのみを表示します。私が間違っていることについて何か考えはありますか?

ありがとう


アップデート:

問題の一部は、すべてのモデルクラスが同じ基本クラスから継承していることです。私がそれらをmodels.Modelから継承させるだけで、問題はなくなります(他の問題は彼らの醜い頭を後押ししますが)。私はまだそれらを単一のクラスから継承したいので、私の元の質問は残ります。


アップデートアップデート:

モデルの基本クラスを抽象化する:

 class BaseClass(models.Model):
     class Meta:
         abstract = True

トリックをするようです。これで、クラス間にForeignKeysとManyToManyFieldsを含めることができます。

4

1 に答える 1

0

外部キーはFooモデルに存在するため、作成する必要がありますFoo FormSet(そうしないと、論理的には、フォームに何が含まれるかについて意味がありません)。

于 2012-01-13T19:00:42.080 に答える