实际上,我正在图书馆管理系统项目中,除归还书本功能外,其他一切都工作正常。我的项目包含书籍,学生和书籍,如果有的话,还可以将其还书。我当时正在做一个归还书功能,我做了逻辑,但它也是正确的,但没有保存到数据库中。即使我想要的计算也已完成,但未提交。我从最近三天开始。如果您有任何想法,请帮助我。而且,请告诉我是否需要其他文件。
models.py用于退货书
class ReturnBook(models.Model):
actual_return_date = models.DateField(default=datetime.today)
book = models.ForeignKey(Book, on_delete=models.CASCADE)
student_name = models.ForeignKey(Student, on_delete=models.CASCADE)
fine_amount = models.IntegerField(default=0)
def __str__(self):
return self.book.book_name + ' is returned by ' + self.student_name.first_name + ' ' + self.student_name.last_name
forms.py用于退货书
class ReturnBookForm(forms.ModelForm):
class Meta:
model = ReturnBook
fields = [
'actual_return_date',
'book',
'student_name',
'fine_amount'
]
urls.py用于退回书和退回书
path('issuedbooks/<int:pk>/returnbook/', views.returnBook, name='return-book'),
path('returnedbook/', views.TransactionandReturnBook, name='returned-book'),
returnbookform.html
{% extends "lms/base.html" %}
{% load crispy_forms_tags %}
{% block content %}
<div class="section">
<form method="POST" action="{% url 'returned-book' %}">
{% csrf_token %}
<fieldset class="form-group">
<div class="card mt-4 detail-view-header">
<h3 class="text-center mt-2 font-weight-bold" style="font-family: monospace; font-size: 25px;">Return
Book here </h3>
</div>
{{ form|crispy }}
</fieldset>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Return Book</button>
</div>
</form>
</div>
{% endblock content %}
views.py用于退货书
@login_required
def returnBook(request, pk):
obj = get_object_or_404(Issue, id=pk)
print(obj)
fine = 0
d1 = date.today()
d2 = obj.expected_return_date
diff_date = d2.day - d1.day
print(diff_date)
if diff_date > 0:
fine = diff_date*2
book = Book.objects.get(book_name=obj.book)
print(book)
book.available_copies = book.available_copies + 1
book.save()
fname = obj.student_name.first_name
print(fname)
student = Student.objects.get(first_name=fname)
print(student)
student.no_of_issued_books = student.no_of_issued_books - 1
student.save()
initial_dict = {
'book' : obj.book,
'student_name': obj.student_name,
'actual_return_date': datetime.today,
'fine_amount': obj.fine_amount,
}
form = ReturnBookForm(request.POST or None, initial=initial_dict)
if form.is_valid():
form.save()
messages.success(request, 'You have returned the book')
return redirect('returned-book')
Issue.objects.filter(id=obj.id).delete()
context = {
'form': form
}
return render(request, 'lms/returnbook_form.html', context)
models.py for issue book
def get_expected_return_date():
return datetime.today() + timedelta(days=30)
class Issue(models.Model):
student_name = models.ForeignKey(Student, on_delete=models.CASCADE)
book = models.ForeignKey(Book, on_delete=models.CASCADE)
issue_date = models.DateField(default=datetime.today)
expected_return_date = models.DateField(default=get_expected_return_date)
def __str__(self):
return self.book.book_name + ' issued for ' + self.student_name.first_name + ' ' + self.student_name.last_name
答案 0 :(得分:0)
您在表单中使用了错误的操作。请使用 {%url'return-book'%} ,而不是 {%url'returned-book'%} < / p>