молодец. я должен признать, что переполнение стека помогло мне, когда все казалось ужасным. в моем простом приложении, мне нужно, когда человек книга комнаты,не может понять, как представить свою логику в рамках проекта
он показывает сообщение подтверждения
есть авто декремент в книге номере есть, скажем, если есть 40 номеров, после одной книги они уменьшаются до 39
, чтобы убедиться, что один человек может забронировать только один раз.
хотя код, который я поставил, казался неправильным и неактуальным, любая помощь, данная оценивается. это логика, поставленная в моделях или представлениях, и если да, просто покажите мне по крайней мере строку кода, как она может быть использована.
models.py
class Booking(models.Model):
Book_No = models.IntegerField(default=1)
Hostel = models.ForeignKey(List, null=True, blank=True)
Room_Number = models.ForeignKey(Room)
Room_capacity = models.CharField(max_length=1, choices=[('S', 'Single'), ('D', 'Double')], default="--")
Booked_by = models.ForeignKey(Student, default='--')
Booked_on = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '{}, booked a {} room in {} {} at {}'.format(
self.Booked_by, self.Room_capacity, self.Hostel, self.Room_Number, self.Booked_on)
views.py
def book(request):
if request.method == "POST":
form = BookForm(request.POST)
if form.is_valid():
post = form.save(commit=True)
post.save()
else:
form = BookForm()
return render(request, 'gyobera/book_now.html', {'form': form})
forms.py
class BookForm(forms.ModelForm):
class Meta:
model = Booking
fields = ('Book_No', 'Hostel', 'Room_Number', 'Room_capacity', 'Booked_by')
book_now.html
{% extends 'base.html' %}
{% load staticfiles %}
{% block title %}{{ classification_name }}{% endblock %}
{% block body_block %}
<h1>Book_now</h1> <a href="/Gyobera/">Home</a><br/>
<br/>
<form method="POST" class="post-form">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">Book_now</button>
</form>
{% endblock %}
благодаря
я выбрал редактировать и оставлять этот вопрос здесь, так как это больше похоже, как тот, я уже написал выше .. Я их здесь: Ниже мой взгляд тянуть номера из базы данных будут просмотр на сайте и просмотр книги. В моем приложении вы можете забронировать общежитие, но когда вы его заказываете, оно не отображается или просто остается в базе данных в виде доступной комнаты, код, который я написал, кажется совершенно неправильным и неуместным, я обращаюсь к вам за помощью .. то, что является самым простым способом, я могу фильтровать общежития, чтобы убедиться, что мужчина бродит, общежития этого пола доступны только. Надеюсь, что приведенный ниже код действительно поможет помочь. благодаря
views.py
def rooms(request):
context_dict = {}
context = RequestContext(request)
room_list = Room.objects.all()
for room in room_list:
context_dict = {'rooms': room_list}
return render_to_response('gyobera/room.html', context_dict, context)
def book(request):
# check if user has already booked:
has_booked = Booking.objects.filter(Booked_by_id=request.POST.get('booked_by')).exists()
# are room free?
rooms_full = Booking.objects.count() == 40
if rooms_full or has_booked:
# redirect to a error view
return 'You have reserved yourself a room'
if request.method == "POST":
form = BookForm(request.POST)
if form.is_valid():
post = form.save(commit=True)
post.save()
else:
form = BookForm()
return render(request, 'gyobera/book_now.html', {'form': form})
models.py
class Room(models.Model):
Hostel = models.ForeignKey(List)
Room_Number = models.CharField(max_length=50)
Total_rooms = models.IntegerField(default=0, blank=True)
Price_single = models.IntegerField(default=0, blank=True)
Price_double = models.IntegerField(default=0, blank=True)
def __str__(self):
return ' {} | {} '.format(self.Hostel, self.Room_Number)
class Booking(models.Model):
Book_No = models.IntegerField(default=1)
Gender = models.CharField(max_length=1, choices=[('M', 'Male'), ('F', 'Female')], default="--")
Hostel = models.ForeignKey(List, null=True, blank=True)
Room_Number = models.ForeignKey(Room)
Room_capacity = models.CharField(max_length=1, choices=[('S', 'Single'), ('D', 'Double')], default="--")
Booked_by = models.ForeignKey(Student, default='--')
Booked_on = models.DateTimeField(auto_now_add=True)
def __str__(self):
return '{}, {} booked a {} room in {} {} at {}'.format(
self.Booked_by, self.Gender, self.Room_capacity, self.Hostel, self.Room_Number, self.Booked_on)
room.html
{% extends 'base.html' %}
{% load staticfiles %}
{% block title %}{{ category_name }}{% endblock %}
{% block body_block %}
<h1><strong>Available rooms </strong></h1><a href="/Gyobera/">Home</a><br/>
{% if rooms %}
<ul>
{% for room in rooms %}
<!-- Following line changed to add an HTML hyperlink -->
<li><a href="{{ room_list}}">{{ room }}</a></li>
{% endfor %}
</ul>
{% else %}
<strong>There are no rooms in this hostel.</strong>
{% endif %}
{% endblock %}
спасибо ilse2005, я полностью понял этот вид. но приложение прибегает к тому, что администратор не является основным пользователем. есть ссылка, где учащиеся могут зарегистрироваться, а их роль состоит в том, чтобы просто забронировать общежитие .. поэтому взгляд должен проверить, не забронировал ли студент уже не пользователь (потому что я предполагаю, что пользователь в этом случае является администратором), когда я попытался поставить –
спасибо ilse2005, я полностью понял этот вид.но приложение прибегает к тому, что администратор не является основным пользователем. есть ссылка, где учащиеся могут зарегистрироваться, поэтому в представлении необходимо проверить, не забронировал ли студент уже не пользователь (потому что я предполагаю, что пользователь в этом случае является админом) продолжение: has_booked = Booking.objects.filter (reserved_by = request. student) .exists(), он вызывает объект WsgiRequest, не имеет ошибки студента-атрибута, который, как я считаю, является следствием отсутствия поиска student.so, как я могу заставить его перейти в базу данных заказов, чтобы проверить, забронировал ли ученик –
В моем Код 'request.user' является зарегистрированным пользователем. Я предположил, что у студентов есть своя учетная запись и вход в систему, прежде чем заказывать номер. Если это не так, вам нужно изменить эту строку примерно так: 'Booking.objects.filter (Забронировано_и_ = request.POST.get ('booked_by')). Exists()'. – ilse2005