我试图创建一个非常简单的表单,供用户从图书馆借书,我有一个借书按钮,可以将用户重定向到另一个页面
一旦用户被重定向,我只想让他点击提交或取消特定的书籍
我的模型是:
class Borrowed(models.Model):
person = models.ForeignKey(Person, null=True, on_delete=models.SET_NULL)
book = models.ForeignKey(Book, null=True, on_delete=models.SET_NULL)
taken_date= models.DateField(auto_now_add=True)
return_date= models.DateField(default=datetime.today()+timedelta(days=90))
def __str__(self):
return f"{self.person} borrowed {self.book}"
views.py:
def borrow(request, pk):
book = Book.objects.get(id=pk)
if request.method == 'POST':
# form = BorrowForm(instance=request.user.person)
form = BorrowForm(request.POST, initial={Book: book.title})
if form.is_valid():
form = form.save(commit=False)
form.person = request.user.person
form.book = book.title
form.save()
return redirect('all_books')
else:
form = BorrowForm(initial=book.title)
context = {'form': form, 'book': book}
return render(request, 'rental/borrow.html', context)
forms.py
class BorrowForm(forms.ModelForm):
class Meta:
model = Borrowed
fields= ['book']
我不知道具体怎么做,在哪里做,因为我是Django的新手。我们将不胜感激。多谢各位
您在传递初始数据时犯了错误。请使用类似的方式传递数据
您必须像这样输入字段名及其值
您必须仅将其放入else语句中,因为如果您将其放入request.post方法中,那么如果用户删除初始数据并将其设置为空并保存,但由于初始数据,它将被存储
我找到了一个解决办法,问题是我把book.title作为首字母传递。我应该使用:
相关问题 更多 >
编程相关推荐