繁体   English   中英

如何根据Django中的用户输入将值存储在模型中?

[英]How do I store values in a model based on user input in django?

对于用户选择的给定时段(应该与之关联的时间,俱乐部,日期和球场),如何将“用户名”中存储的值保存到Opening类的“预订”字段中?

def vote(request, club_id):
    if 'username' in request.POST and request.POST['username'] and 'slot' in request.POST and request.POST['slot']:
        username = request.POST['username']
        slot = request.POST['slot']
        #save the value stored in "username" to the "reservation" field in class Opening with the other associated data (club, time, day, court)
        return HttpResponseRedirect('reserve/templates/booked.html',{'username':username, 'slot':slot})
    else:
        return render_to_response('reserve/templates/vote.html', {'error': True})

Avail_times.html:

<form action="/clubs/{{ club.id }}/vote/" method="post">
{% csrf_token %}
{{ today }}<br>
{% for slot in open_slots %}
    <input type="checkbox" name="slot" id="slot{{ forloop.counter }}" value="{{ slot.id }}" />
    <label for="slot{{ forloop.counter }}">{{ slot.slot }} on Court {{slot.court}}</label><br />
{% endfor %}

<br>
{{ tomorrow }}<br>
{% for slot in tom_open_slots %}
    <input type="checkbox" name="slot" id="slot{{ forloop.counter }}" value="{{ slot.id }}" />
    <label for="slot{{ forloop.counter }}">{{ slot.slot }} on Court {{slot.court}}</label><br />
{% endfor %}    
<input type="text" name="username" />
<input type="submit" value="Reserve" />

模型:

from django.db import models
import datetime

class Club(models.Model):
    establishment = models.CharField(max_length=200)
    address = models.CharField(max_length=200)
    def __unicode__(self):
        return self.establishment

class Court(models.Model):
    club = models.ForeignKey(Club)
    day = models.ForeignKey(Day)
    court = models.IntegerField(max_length=200)
    def __unicode__(self):
        return unicode(self.court)

class Opening(models.Model):
    club = models.ForeignKey(Club)
    day = models.DateField('date')
    court = models.ForeignKey(Court)
    slot = models.TimeField('slot')
    reservation = models.CharField(max_length=200)
    def __unicode__(self):
        return unicode(self.slot)

如果要更新Opening模型,则需要知道哪个模型。

opening_id写入表单。 我不确定您的插槽和开口如何关联,因此您必须弄清楚这一点。

我通常会使用get_object_or_404获得相关的Opening

username = request.POST['username']
opening = get_object_or_404(Opening, id=request.POST['opening_id'])
opening.reservation = username
opening.save()

您还需要检查是否允许用户更新该开口。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM