【问题标题】:How can I get session data into django model?如何将会话数据导入 django 模型?
【发布时间】:2019-11-16 15:04:13
【问题描述】:

我正在尝试将默认值设置为存储在 django 会话中的列。下面的代码给出了一个错误get_state_id() missing 1 required positional argument: 'request' 我知道这个错误的原因。但是当我没有在定义的函数get_id 中给出request 参数时,我就无法获得id 的值。请帮帮我。

def get_id(request):
    id = request.session.get('id')
    return id

class Forms(models.Model):
    form_id = models.AutoField(primary_key=True)
    id= models.IntegerField(default=get_id)

【问题讨论】:

    标签: django python-3.x django-models


    【解决方案1】:

    从模型开始,我已经从管理页面本身完成了。下面是代码截图。

    def save_model(self, request, obj, form, change):
        id = request.session.get('id')
        obj.id= id
        super(FormsAdmin, self).save_model(request, obj, form, change)
    

    【讨论】:

      【解决方案2】:

      一个想法是覆盖保存方法。

      def get_id(request):
          id = request.session.get('id')
          return id
      
      class Forms(models.Model):
          form_id = models.AutoField(primary_key=True)
          id = models.IntegerField()
      
          def save(self, request, *args, **kwargs):
              if not self.id:
                  self.id = get_id(request)   
              super().save(*args, **kwargs)
      
      

      【讨论】:

      • 我相信保存覆盖函数'You must pass in the request object to the save method.' 中的第二行是注释。我尝试运行此代码(删除注释)我在assert 'request' in kwargs 行收到错误No exception message supplied
      猜你喜欢
      • 2014-08-30
      • 2021-02-10
      • 2019-05-12
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 2023-01-03
      相关资源
      最近更新 更多