[英]Python, django: I would like to put objects within the 'input' tag or 'select' tag on form. ..in order to transfer the objects to the booking_form
[英]I would like to limit the borrowing objects in my Django app
我有一个显示游戏的应用程序,用户可以借用它们。 我想将每个用户的借用游戏数量限制为最多 3 个游戏。 我创建了两个模型借用和游戏。 除了最大借用外,这些方法效果很好。
# Method display borrowed games
@login_required
def borrows(request):
borrows = Borrow.objects.filter(owner = request.user).order_by('date_borrowed')
context = {'borrows':borrows}
return render(request, 'gameapp/borrows.html', context)`
# Methos allow the user borrow single game
@login_required
def borrow(request, boardgame_id):
boardgame = Boardgame.objects.get(id=boardgame_id)
if request.method != 'POST':
form = BorrowForm()
else:
form = BorrowForm(data = request.POST)
if form.is_valid():
borrow_boardgame = form.save(commit = False)
borrow_boardgame.owner = request.user
# Replace the borrow varibale from borrow Model to main game
borrow_boardgame.borrow = boardgame
form.save()
return redirect('gameapp:borrows')
context = {'boardgame': boardgame, 'form':form}
return render(request, 'gameapp/borrow.html', context)
我还使用了 limit [:3] 但这将使用户将数据发送到后端的数据库。
# A model for the game
class Boardgame(models.Model):
name = models.CharField(max_length=50)
date_added = models.DateTimeField(auto_now_add=True)
date_modified = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.name
# A model for borrowing a game
class Borrow(models.Model):
borrow = models.ForeignKey(Boardgame, on_delete=models.CASCADE)
date_borrowed = models.DateTimeField(auto_now_add=True)
date_returned = models.DateTimeField(auto_now_add=True)
owner = models.ForeignKey(User, on_delete=models.CASCADE, default=3)
def __str__(self):
return str(self.borrow)```
你可以在form.is_valid()
中检查他是否借了超过 3 个游戏, if
是这样:
if form.is_valid():
borrowed_count = Borrow.objects.filter(owner=request.user).count()
if borrowed_count < 4:
form.save()
else:
print("You've borrowed 3 games already") # or whatever
此外,您owner
字段中的default
是指定user.pk
而不是games
,您应该更改它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.