私はPython + MongoDB(MongoEngine)を使って簡単な予約ベースのアプリケーションを作成しています。djangoのHTMLテンプレートからmongodb要素のObjectIDを取得する
アプリケーションには、レストランと予約の2つのモデルがあります。
class Restaurant(Document):
name = StringField(max_length=200, required=True)
location = StringField(max_length=200, required=True)
class Reservation(Document):
restaurant_id = ReferenceField(Restaurant, reverse_delete_rule=CASCADE)
time = IntField(min_value=1, required = True)
number_of_people = IntField(min_value=1, required = True)
予約にはレストランへの参照フィールドがあります。 [DBRefを内部で使用するMongoEngine]
今、レストランのリストをレンダリングするとき、各レストランに対応する予約のオプションを与える必要があります。レストランのリストに対応して提供されるDjangoテンプレートでは、レストラン要素の3つのフィールドすべてが含まれています:restaurant.id restaurant.nameとrestaurant.location。
以下は、レストランリストに対応するテンプレートです。ユーザが予約をクリックした場合
{% extends "base.html" %}
{% block content %}
{% for restaurant in restaurant_list %}
<div style="margin-bottom: 20px;">
<h4>{{ restaurant.name }}</h4>
<h4>{{ restaurant.location }}</h4>
<a href="{{ restaurant.get_reserve_url }}" class="btn btn-small">Reserve Table</a>
</div>
{% endfor %}
`{%の末端ブロック%}
は今、私は(CREATEVIEWとDjangoのforms.Formsを使用して)フォームを作成する必要があります。
しかし、フォームデータ(MongoDBのReservationコレクションのエントリ)を保存するには、レストランの参照オブジェクトが必要です。どうすれば入手できますか?