【问题标题】:django models request get id error Room matching query does not existdjango models request get id error 房间匹配查询不存在
【发布时间】:2015-08-11 13:51:58
【问题描述】:

我有两个模型,当我做 request.POST.get('room_id') 或 ('id') 时,我收到一个错误房间匹配查询不存在。 如何解决这个问题?帮帮我

教室(models.Model): status = models.BooleanField('Status',default=True) name = models.CharField('Name', max_length=100, unique=True) 类书(模型。模型): date = models.DateTimeField('Created',auto_now_add=True) from_date = models.DateField('签到') to_date = models.DateField('退房') room = models.ForeignKey(Room, related_name='booking')

我需要详细的房间请求获取 ID,预订日期范围(从_日期,到_日期)

def room_detail(请求,pk): 房间 = get_object_or_404(房间,pk=pk) 如果 request.method == 'POST': form = BookForm(request.POST,room=room) 如果 form.is_valid(): s = form.save(提交=真) s.save() 返回重定向(request.path) 别的: 表格 = BookForm() #roomid = Room.objects.values('id') type = request.POST.get('id') # 或 get('room_id') 房间 = Room.objects.get(id=type) start_dates = rooms.booking.values_list('from_date',flat=True) end_dates = rooms.booking.values_list('to_date',flat=True) 日期 = [start + timedelta(days=i) for start, end in zip(start_dates,end_dates) for i in range((end-start).days+1)] c = {} c['form'] = 形式 return render_to_response('rooms_detail.html',c)

请帮帮我,提前谢谢

【问题讨论】:

  • 你有确切的错误信息和行吗?
  • 为什么你的 type = req...等等不在你的 POST 方法中?
  • @317070 感谢您的快速回复,我收到错误 app.models.DoesNotExist:房间匹配查询不存在。怎么改?
  • @RogerFederer 怎么办?请查看示例

标签: django python-3.x django-queryset models


【解决方案1】:

您正在查看 request.POST,即使 request.method 不等于“POST”。这将不起作用,因为当请求不是 HTTP-post 时,您的请求的 POST 成员为空。

【讨论】:

  • 对于这样的事情你可以发表评论。
【解决方案2】:

移动你的线条

#roomid = Room.objects.values('id')
type = request.POST.get('id') # or get('room_id')
rooms = Room.objects.get(id=type)

在 post 方法中。

if request.method == 'POST':
    form = BookForm(request.POST,room=room)
    if form.is_valid():
        #roomid = Room.objects.values('id')
        type = request.POST.get('id') # or get('room_id')
        rooms = Room.objects.get(id=type)
        s = form.save(commit=True)          
        s.save()
        return redirect(request.path)

【讨论】:

    【解决方案3】:
    if request.method == 'POST':
        form = BookForm(request.POST,room=room)
        if form.is_valid():
            type = request.POST.get('id')
            rooms = Room.objects.get(id=type)
            object = form.save(commit=True)          
            object.save()
            return redirect(request.path)
    

    【讨论】:

      猜你喜欢
      • 2022-01-24
      • 1970-01-01
      • 2015-01-28
      • 2022-01-05
      • 2020-10-15
      • 2016-05-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多