나는 Django 1.4의 일반 뷰에 대한 매뉴얼을 따라 왔지만 작동시키기 위해 'list book by publisher'예제를 얻을 수 있습니다. 내 사이트는 내가 부동산을 예약하는 사람의 이름 (또는 id)으로 부동산 예약을 나열하려고하는데 약간 다릅니다. 사람들은 두 번 이상 예약 할 것이므로 예약 내용을 볼 수 있기를 바랍니다.django 클래스 기반 뷰 키워드
class GuestBookingListView(DetailView):
context_object_name = 'guest_booking'
template_name = 'guest_booking.html'
def get_queryset(self):
self.guest = get_object_or_404(Guest)
return Booking.objects.filter(guest = self.guest)
def get_context_data(self, **kwargs):
context = super(GuestBookingListView, self).get_context_data(**kwargs)
context['guest'] = self.guest
return context
내 모델은 다음과 같습니다 :
는이에 대한 나의 views.url이다
class Guest(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=50)
spouse_first = models.CharField(max_length=30, blank=True)
spouse_last = models.CharField(max_length=50, blank=True)
num_child = models.IntegerField(verbose_name='Number of children')
address = models.TextField(max_length=50, blank=True)
city = models.CharField(max_length=60, blank=True, verbose_name='Town/City')
state_province = models.CharField(max_length=30, blank=True, verbose_name='County')
post_code = models.CharField(max_length=8, blank=True)
country = models.CharField(max_length=50, blank=True)
email = models.EmailField(blank=True)
landline = models.CharField(max_length=25, blank=True)
mobile = models.CharField(max_length=25, blank=True)
def __unicode__(self):
return u'%s %s' % (self.first_name, self.last_name)
class Booking(models.Model):
guest = models.ForeignKey(Guest)
ack_date = models.DateField(verbose_name='Date acknowledged')
start_date = models.DateField(verbose_name='Start date')
end_date = models.DateField(verbose_name='End date')
dep_recd = models.DateField(null=True, blank=True, verbose_name='Deposit received')
bal_recd = models.DateField(null=True, blank=True, verbose_name='Balance received')
keys_sent = models.DateField(null=True, blank=True, verbose_name='Date keys sent')
sec_retn = models.DateField(null=True, blank=True, verbose_name='Security deposit returned')
rtm_sent = models.IntegerField('Status', blank=True)
notes = models.TextField(blank=True, verbose_name='Notes')
내 urls.py는 다음과 같습니다
url(r'^guests/(?P<pk>\d+)/$', GuestBookingListView.as_view (
#context_object_name = 'booking_list',
)),
지금까지 내가 볼 수있는 이 예제는 다른 필드 이름과 동일하지만 결과는 다음과 같습니다.
get()가 두 개 이상 반환되었습니다. 게스트가 26을 반환했습니다. 조회 매개 변수는 {
입니다. 'get'은 내가 선택한 항목이 아닌 데이터베이스의 모든 손님을 검색합니다.
나는 이것에 대한 검색과 실험에 많은 시간을 할애했지만 아무 소용이 없습니다. '손님 = 11'을 입력하면 작동하므로 Pk에 문제가있는 것입니다.
감사합니다.
Daniel. 감사합니다. 나는 그것이 그와 비슷한 것이어야한다는 것을 알았지 만 올바른 형식을 찾을 수 없었습니다. – sidestrand