【问题标题】:How to use request.GET in Django models如何在 Django 模型中使用 request.GET
【发布时间】:2019-09-13 07:25:22
【问题描述】:

我想在模型中使用“请求”数据(即HttpRequest)。这可能吗?

models.py

[...]
from django.http import *
[...]

    class cat_1(models.Model):
            nome = models.CharField(max_length=255)
            descrizione = models.CharField(max_length=255,  null=True, blank=True)
            seo_id = models.SlugField(max_length=255,  unique="True",  verbose_name="Tutto in minuscolo, sostituire spazi con trattino - ")
            livello_0 = models.ManyToManyField("cat_0",  null=True, blank=True,  verbose_name="Livello 0")

            def selezionati(self):
                Get_Data = request.GET 
                return Get_Data

这是错误:

异常类型:/categorie/pesce/ 处的 AttributeError 异常值: “模块”对象没有属性“GET”

【问题讨论】:

  • 模型是关于将数据保存到数据库的。控制器(您的视图)应该是 - 并且 is - 唯一处理请求的东西。由于 HTTP 的请求-响应性质,它不完全是 MVC,但它很接近。最佳实践见官方教程-docs.djangoproject.com/en/dev/intro/tutorial01
  • @karthikr 在这种情况下,self 是一个模型,它没有 request 属性。
  • 坏消息,我必须改变所有...谢谢!

标签: python django


【解决方案1】:

如果你真的需要模型实例中的请求,你应该在使用之前从视图中注入它:

class cat_1(models.Model):
    ...

    def inject_request(self, request):
        self.request = request

def some_view(request):

    my_model = cat_1()
    my_model.inject_request(request)
    ...

但您的代码显示您不需要它。

【讨论】:

    猜你喜欢
    • 2016-09-10
    • 2016-06-18
    • 1970-01-01
    • 1970-01-01
    • 2020-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    相关资源
    最近更新 更多