django - 如何在Django的views.py中使用ORM创建和保存数据?
问题描述
我有一个由按钮组成的模板。如果登录用户单击它,它应该生成一个时间并将其保存在模型中,然后在模板中检索该时间。但是,这并没有按预期执行。这就是我所做的:
模型.py:
class Mytime(models.Model):
pid= models.ForeignKey(User, on_delete = models.CASCADE)
time = models.DateTimeField()
视图.py:
def generate_time(request):
if request.method == 'GET':
current_time = timezone.now()
user_id = User.objects.get(username=request.GET.get('username')).pk
if (Mytime.objects.filter(id__exact=user_id, time=current_time) in (None, '')):
time = Mytime.objects.create(time=current_time)
else:
pass
data = Mytime.objects.values_list('time', flat=True)
return HttpResponse(data) #return time to the template.
接口.html:
{% block content %}
<div class="content-section">
<button type="button" class="btn btn-outline-info" id ='get_time'> Click me </button>
<h4 id='insert_time'></h4> //should display the time here from model
</div>
{% endblock content %}
接口模板内的JS AJAX代码:
<script type="text/javascript">
$('#punchin').click(function () {
username = localStorage.getItem('username');
console.log(username)
$.ajax({
cache: false,
url: {% url 'generate_time' %},
type: 'GET',
data: {username: username},
success: function(data) {
$("#insert_time").html(data.value);
}
});
});
</script>
但是,在执行期间,不会生成时间。AJAX 调用有效,但 if/else 条件未执行。我该怎么做?我的 views.py 函数有什么问题吗?
解决方案
您不应使用 values_list,因为它返回值列表。可能您应该使用该用户的最后一个条目。你也应该使用查询集的 exists() 方法。
尝试这个:
def generate_time(request):
if request.method == 'GET':
if not Mytime.objects.filter(pid=request.user).exists():
current_time = timezone.now()
my_time = Mytime.objects.create(time=current_time, pid=user)
data = my_time.time
else:
data = Mytime.objects.filter(pid=request.user).last().time
return HttpResponse(data) #return time to the template.
推荐阅读
- z3 - 如何在 Z3 中以 SMTLIB 格式表示集合成员?
- node.js - MongoDB 使用不和等于
- android - 如何在与firebase(FCM)的颤动中使用onBackgroundMessage,onBackgroundMessage没有被触发
- angular - 如何以角度更改chart.js中条形的颜色和宽度
- mysql - MySQL:引擎中不存在表“my_table”
- excel - 语法错误 CountIfs-function 多条件
- python - python函数参数中的三元运算符使用默认值
- c# - 在 azure 函数中获取队列名称或主题+订阅者名称(Azure 服务总线触发函数)
- amazon-web-services - AWS Neptune 中的元属性
- javascript - Javascript:当鼠标移过它们时突出显示所有段落,然后在鼠标经过后恢复