【发布时间】:2020-07-11 09:44:58
【问题描述】:
我有一个非常简单的模型,只包含四个字段:meeting_date、meeting_hour、participant_name 和 participant_email。我正在向参与者发送有关所选数据、小时数的电子邮件,它有效。但是这个时间表没有写入数据库。这是我的代码:
views.py:
def index(request):
context = {
'schedules': Schedule.objects.all()
}
participant_name = request.POST.get('name')
participant_email = request.POST.get('email')
meeting_date = request.POST.get('date')
meeting_hour = request.POST.get('hour')
subject = 'Görüş'
message = 'Hello ' + str(participant_name) + '. \nDate: ' + str(meeting_date) + ' hour ' + str(meeting_hour).
from_email = settings.SERVER_EMAIL
recipient_list = [participant_email]
send_mail(subject, message, from_email, recipient_list)
if request.POST.get('participant_email'):
Schedule.objects.create(
participant_name = request.POST.get('name'),
participant_email = request.POST.get('email'),
meeting_date = request.POST.get('date'),
meeting_hour = request.POST.get('hour')
)
return render(request, 'index.html', context)
admin.py:
class ScheduleAdmin(admin.ModelAdmin):
list_display = ['participant_name', 'participant_email', 'is_scheduled', 'meeting_date', 'meeting_hour']
admin.site.register(Schedule, ScheduleAdmin)
models.py:
class Schedule(models.Model):
participiant_name = models.CharField(max_length=100)
participiant_email = models.CharField(max_length=100)
meeting_date = models.DateField()
meeting_hour = models.TimeField()
is_scheduled = models.BooleanField(default=False)
def __str__(self):
return self.meeting_date
html:
<form action="{% url 'index' %}" method="POST">
{% csrf_token %}
<div class="form-group">
<label for="name">Name</label><br/>
<input type="text" name="name" id="name" placeholder="Name">
</div>
<div class="form-group">
<label for="email">Email</label><br/>
<input type="email" name="email" id="email" placeholder="Email">
</div>
<div class="form-group">
<label for="date">Date</label><br/>
<input type="date" name="date">
</div>
<div class="form-group">
<label for="hour">Saat</label><br/>
<select name="hour" id="hour">
<option value="1">Hour</option>
<option value="14:00">14:00</option>
<option value="15:00">15:00</option>
<option value="16:00">16:00</option>
<option value="17:00">17:00</option>
<option value="18:00">18:00</option>
</select>
</div>
<div class="form-group">
<button type="submit">Save</button>
</div>
</form>
【问题讨论】:
-
似乎没有创建日程安排,因为您将 meeting_date 和 meeting_hour 作为字符串传递,但模型将这两个字段定义为 DateField 和 TimeField。还可以考虑为 Schedule 创建 ModelForm,因为它会为您验证用户输入。
-
@Yellowduck 你说我将日期作为字符串发送。它发生在哪里?我应该在哪里进行更改?顺便说一句,我尝试过 ModelForm 方法,但不知道 TimeField 使用什么。有没有可以选择小时和分钟的小部件?
标签: python django django-models django-views django-database