【问题标题】:Automatically update user_id and date fields at django into database自动将 django 中的 user_id 和 date 字段更新到数据库中
【发布时间】:2020-09-28 06:23:31
【问题描述】:
我是 Python 和 Django 的新手,我想在 models.py 中实现一些目标:
用户提交表单后,我想将用户的当前日期和当前 user_id 都保存到数据库中。
我知道 django 提供为这些使用 @property 装饰器,但问题是我想使用 user_id 进行 SQL 查询,而这不适用于装饰器。
另一个相关的问题是如何建立计算字段,例如在提交之前自动计算表单中的两个值。
【问题讨论】:
标签:
django
database
model
userid
calc
【解决方案1】:
在 settings.py 我添加了这一行:'crum.CurrentRequestUserMiddleware',
在models.py中:
from django.contrib.auth.models import User
import crum
class PlantSpecies(models.Model):
def save(self, *args, **kwargs):
userid = crum.get_current_user()
self.userid = userid.id
super(PlantSpecies, self).save(*args, **kwargs)
userid = models.CharField(max_length=45, blank=True, default=crum.get_current_user())
date = models.DateTimeField(auto_now_add=True)
species = models.CharField(max_length=45, blank=True)
common_name = models.CharField(max_length=30, null=True, blank=True)
def __str__(self):
return self.species
【解决方案2】:
尝试制作提交表单的模型。并给模型一个连接到用户的外键。然后添加一个 DateField 并从可能已经安装在您的设备上的 datetime 模块中证明默认值为 datetime.now()。