2

私はこのような2つのモデルを持っています:

class Person(models.Model):
    name = models.CharField(max_length=100)
    house = models.ForeignKey('House')

class House(models.Model):
    address = models.TextField()

モデル フォームを作成し、関連するオブジェクトPersonを編集するためにフォームをインラインで含める方法はありますか? House私がインライン フォームセットについて理解していることから、a を編集するHouseフォームがあり、関連するすべての のフォームを表示したい場合にのみ、それを使用しPersonます。何か案は?

4

3 に答える 3

0

それがそれを解決するための最良の方法であるかどうかはわかりませんが、私は次のようなことをします:

ModelForm各モデルからを定義します。

class PersonForm(ModelForm):
    class Meta:
        model = Person

class HouseForm(ModelForm):
    class Meta:
        model = House

次のようなテンプレートを定義して、両方のフォームを出力します。

<form action="" method="post">
    <table>
        {{ form1 }}
        {{ form2 }}
    </table>
    <input type="submit">
</form>

両方のモデルからの情報を編集するためのフォームを作成するためのビュー。

def edit(request):
    # You could grab the id from the request that calls the edit form
    p = models.Person.objects.get(pk=request.GET.get('id'))
    h = models.House.objects.get(pk=p.house.id)
    return render_to_response('template.html',
        RequestContext(request, 
            {'form1': PersonForm(instance=p), 'form2': HouseForm(instance=h)}
        )
    )

等々。

于 2013-01-13T01:59:42.777 に答える
0

Person を介して、関連する House オブジェクトにアクセスできます。そのため、家のオブジェクトを Modelform のインスタンスとして使用します。

HouseForm(ModelForm):
    class Meta:
        model = House

関連する House を持つ Paul の Person オブジェクトがあるとします。

house_form = HouseForm(instance=Paul.house)

これはあなたが得ていたものですか?

于 2013-01-12T21:06:21.890 に答える