1
クエリーセットのdjangoテンプレートにM2Mフィールドの属性の1つを表示しようとしています。私はrooms
fielsにアクセスしようとしていますdjangoアクセスm2mクエリーセットのフィールド属性
Reservation
クエリセットから今
class Reservation(models.Model):
hotel = models.ForeignField(Hotel)
rooms = models.ManyToManyField(Room, through='ReservationRoom')
class Room(models.Model):
number = models.IntegerField(default=0)
class ReservationRoom(models.Model):
reservation = models.ForeignKey(Reservation, related_name='reservation_rooms', on_delete=models.PROTECT)
room = models.ForeignKey(Room, on_delete=models.PROTECT)
room_type = models.ForeignKey(RoomType, related_name='reservation_rooms', on_delete=models.PROTECT)
は、
{% for res in reservations %}
<tr>
<td>{{ loop.index }}</td>
{% for room in reservations.rooms_set.all%}
<td>{{ room.number }}</td>
{% endfor %}
</tr>
{% endfor %}
とviews
def arrivals(request, hotel):
res = Reservation.objects.filter(hotel=hotel)
return render(request, "sample.html", {'reservations': res})
、このようすなわちnumber
(神社のテンプレートを使用して)Djangoのテンプレートで属性しかし、次のエラーを投げると、
'django.db.models.query.QuerySet object' has no attribute 'rooms_set'
どうしたのですか? neverwalkaloner
Traceback Switch to copy-and-paste view
/home/rayhan/work/venv/local/lib/python2.7/site-
packages/django/core/handlers/exception.py in inner
response = get_response(request) ...
▶ Local vars
/home/rayhan/work/venv/local/lib/python2.7/site-
packages/django/core/handlers/base.py in _legacy_get_response
response = self._get_response(request) ...
▶ Local vars
/home/rayhan/work/venv/local/lib/python2.7/site-
packages/django/core/handlers/base.py in _get_response
response = self.process_exception_by_middleware(e,
request) ...
▶ Local vars
/home/rayhan/work/venv/local/lib/python2.7/site-
packages/django/core/handlers/base.py in _get_response
response = wrapped_callback(request, *callback_args,
**callback_kwargs) ...
▶ Local vars
/home/rayhan/work/XercesBlue/core/rbac/decorators.py in _wrapped_view
return view_func(request, hotel, *args, **kwargs)
...
▶ Local vars
/home/rayhan/work/XercesBlue/pms/guest/views.py in arrivals
return render(request, "pms/guest/arrivals.html", {'reservations':
res, 'arrivals': True}) ...
▶ Local vars
/home/rayhan/work/venv/local/lib/python2.7/site-
packages/django/shortcuts.py in render
content = loader.render_to_string(template_name, context, request,
using=using) ...
▶ Local vars
/home/rayhan/work/venv/local/lib/python2.7/site-
packages/django/template/loader.py in render_to_string
return template.render(context, request) ...
▶ Local vars
/home/rayhan/work/venv/local/lib/python2.7/site-
packages/django_jinja/backend.py in render
return mark_safe(self.template.render(context)) ...
▶ Local vars
/home/rayhan/work/venv/local/lib/python2.7/site-
packages/jinja2/environment.py in render
return self.environment.handle_exception(exc_info, True) ...
▶ Local vars
/home/rayhan/work/venv/local/lib/python2.7/site-
packages/jinja2/environment.py in handle_exception
reraise(exc_type, exc_value, tb) ...
▶ Local vars
/home/rayhan/work/XercesBlue/templates/pms/guest/arrivals.html in top-
level template code
{% do sidebar_items.user.update({'children': True}) %} ...
▶ Local vars
/home/rayhan/work/XercesBlue/templates/pms/base.html in top-level
template code
{% block content %} ...
▶ Local vars
/home/rayhan/work/XercesBlue/templates/pms/guest/arrivals.html in
block "content"
{% for room in res.rooms.all %}
...
▶ Local vars
TypeError at /exe/hotel/260/guest/arrivals/
'instancemethod' object is not iterable
Request Method: GET
Request URL: http://localhost:8000/exe/hotel/260/guest/arrivals/
Django Version: 1.11
Exception Type: TypeError
Exception Value:
'instancemethod' object is not iterable
'through'テーブルを使用しているため、' rooms_set'はありません。 'through'を使用しないとうまくいくでしょう。 –
あなたはReservationRoomというモデルがありますか? – Exprator
@Expratorはい私は.. – RTan