【问题标题】: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()。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-30
      • 1970-01-01
      • 2015-01-07
      • 2022-11-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多