将create date的auto_now_add删除 并加入upload相关栏位
DateTimeField()设定auto_now_add的话 会在创建文件的时候自动加入时间戳记
後续如果使用update(只调用sql)也没问题
但如果用save(走过model)
你不传值给他,他会把create date设为null
你传值给他,他会说这个栏位是不可更改的
一般来说都会用update更新
但是上传附件要用save,会经过model层,所以一定会遇到这个问题
然後新增加upload file需要的两个栏位
指定upload_to会将档案储存到upload资料夹内
doc_info/models.py
from django.db import models
from django.contrib.auth.models import User
from allauth.account.models import EmailAddress
class doc_warehouse(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='doc_warehouse')
create_date = models.DateTimeField()
last_mod_date = models.DateTimeField(auto_now=True)
title = models.CharField(max_length=128, blank=True)
remark = models.CharField(max_length=128, blank=True)
status = models.IntegerField(default=1, null=True, blank=True)
link = models.CharField(max_length=128, blank=True)
upload_file_name = models.CharField(max_length=128, blank=True)
upload_file = models.FileField(upload_to='upload',null=True, blank=True)
下列方法可以让保持create date然後又更新其他资讯
doc_info/views.py
def doc_test(request):
i=5
doc_create_date = doc_warehouse.objects.get(id=153).create_date
doc = doc_warehouse(
id = 153,
create_date = doc_create_date,
user_id = i,
title = f"tittle {i}",
remark = f"remark {i}",
link = f"link {i}",
)
doc.save()
return render(request, 'doc/test.html')
下列方法可以将用POST方式传到test的资讯跟档案上传到资料库内
doc_info/views.py
def doc_test(request):
if request.method == "POST":
upload_file_name = request.POST["fileTitle"]
upload_file = request.FILES["uploadedFile"]
document = doc_warehouse(
user_id = 4,
upload_file_name = upload_file_name,
upload_file = upload_file,
)
print(document)
document.save()
return render(request, 'doc/test.html')
加入table展示request传送过来的讯息
建立一个简单的上传功能form
templates/test.html
{% block content %}
<table border="1">
<tr><th>Attributes</th><th>Result</th></tr>
<tr><td>request</td><td>{{request}}</td></tr>
<tr><td>request.get_host</td><td>{{request.get_host}}</td></tr>
<tr><td>request.encoding</td><td>{{request.encoding}}</td></tr>
<tr><td>request.method</td><td>{{request.method}}</td></tr>
<tr><td>request.scheme</td><td>{{request.scheme}}</td></tr>
<tr><td>request.data</td><td>{{request.data}}</td></tr>
<tr><td>request.path</td><td>{{request.path}}</td></tr>
<tr><td>request.path_info</td><td>{{request.path_info}}</td></tr>
<tr><td>request.content_type</td><td>{{request.content_type}}</td></tr>
<tr><td>request.content_params</td><td>{{request.content_params}}</td></tr>
<tr><td>request.GET</td><td>{{request.GET}}</td></tr>
<tr><td>request.POST</td><td>{{request.POST}}</td></tr>
<!-- <tr><td>request.COOKIES</td><td>{{request.COOKIES}}</td></tr> -->
<tr><td>request.FILES</td><td>{{request.FILES}}</td></tr>
<!-- <tr><td>request.META</td><td>{{request.META}}</td></tr> -->
<tr><td>request.headers</td><td>{{request.headers}}</td></tr>
<tr><td>request.headers.user_agent</td><td>{{request.headers.user_agent}}</td></tr>
<tr><td>request.read</td><td>{{request.read}}</td></tr>
</table>
<h2>Add ok</h2>
<body>
<form action="{% url 'doc_info:test' %}" method="POST" enctype="multipart/form-data">
<input type="text" name="fileTitle" placeholder="Enter a title">
<input type="file" name="uploadedFile">
{% csrf_token %}
<input type="submit" value="Upload">
</form>
</body>
{% endblock %}
<<: Day20 - 轻前端 Vue - 复杂型别 object + object collection
早起运动Day5-自我对谈 在运动时也会想起相遇过的人,看过的书,经验过的故事。 『看起...
今天介绍的这篇,是很明显的天气IoT实例应用,作者将天气Sensor收集来要资料,用Logstash...
本篇同步发布於Blog:[解题] LeetCode - 7 Reverse Integer 平台: ...
1.安装 (1)官方网站(只有MySQL) https://dev.mysql.com/ (2)下载...
Use Case Spec 这边以之前的 use case 当作例子来撰写测试。 首先要能快速地建立...