小编gru*_*cha的帖子

Django:字段自身模型实例的默认值

如何为从模型的现有对象中获取的字段设置默认值?

我尝试过这些并没有奏效:

1)

class ModelA(models.Model):
    fieldA = models.CharField(default=self.get_previous())

    def get_previous(self):
        return ModelA.objects.all()[0].fieldA
Run Code Online (Sandbox Code Playgroud)

NameError: name 'self' is not defined

2)

class ModelA(models.Model):
    fieldA = models.CharField(default=ModelA.get_previous())

    @staticmethod
    def get_previous():
        return ModelA.objects.all()[0].fieldA
Run Code Online (Sandbox Code Playgroud)

NameError: name 'ModelA' is not defined

3)

class ModelA(models.Model):
    fieldA = models.CharField(default=get_previous())

def get_previous():
    return ModelA.objects.all()[0].fieldA
Run Code Online (Sandbox Code Playgroud)

NameError: global name 'get_previous' is not defined

4)

def get_previous():
    return ModelA.objects.all()[0].fieldA

class ModelA(models.Model):
    fieldA = models.CharField(default=get_previous())
Run Code Online (Sandbox Code Playgroud)

NameError: global name 'ModelA' is not defined

我很清楚为什么3)和4)不起作用.我可以想象为什么1)不会起作用 - 看起来类'本能不能引用实例(即自我).我可以想象为什么2)不起作用 - 显然没有对ModelA的引用,直到解释器将通过全班.

那我该怎么做呢?

django default field

19
推荐指数
1
解决办法
1万
查看次数

如何配置apache以使用Access-Control-Allow-Origin标头处理多个域?

我想配置apache以允许来自多个域但不是所有域的XMLHttpRequests.

这有效:

Header set Access-Control-Allow-Origin "*"
Run Code Online (Sandbox Code Playgroud)

但它不安全,我想允许我指定的域名,所以经过一些谷歌搜索我得到了这个:

Header set Access-Control-Allow-Origin "http://domain1.com http://domain2.com"
Run Code Online (Sandbox Code Playgroud)

但这只能获得第一个域名,第二个域名不被允许.如何正确指定多个域?

apache ajax

16
推荐指数
1
解决办法
2万
查看次数

django add_to_class() 使模型继承/MRO 工作出错

通过 add_to_class() 添加字段时,我的模型继承存在问题。我有一个模型File(models.Model)Image(File)-这些来自Django的文件管理器。

在我的应用程序中,我正在导入它们并添加字段和方法:

def method_x(self):
    print "x"

File.add_to_class("expiration_date", models.DateField(null=True, blank=True))
File.add_to_class("method_x", method_x)
Run Code Online (Sandbox Code Playgroud)

Image 应该继承这两个,但它只获取方法,而不是字段:

>>> some_file = File.objects.get(id=8)
>>> some_image = Image.objects.get(id=8)
>>>
>>> print some_file.expiration_date # this works
... None
>>>
>>> some_image.metgod_x() # this works
>>> x
>>>
>>> print some_image.expiration_date # and this not
Traceback (most recent call last):
    File "<console>", line 1, in <module>
AttributeError: 'Image' object has no attribute 'expiration_date'
Run Code Online (Sandbox Code Playgroud)

有什么线索吗?

django inheritance method-resolution-order

6
推荐指数
1
解决办法
6033
查看次数

django:使用保存后信号的递归

情况如下:

假设我在django中有一个模型A. 当我保存一个对象(A类)时,我需要将它的字段保存到该类的所有其他对象中.我的意思是我需要每个其他A对象都是lat保存的副本.

当我使用信号(例如后保存)时,我得到一个递归(对象试图相互保存,我猜)并且我的python死了.

我希望在前/后保存信号中对同一个类使用.save()方法会导致递归,但只是不知道如何避免它.

我们做什么?

django recursion signals save

5
推荐指数
3
解决办法
3453
查看次数

App Engine webapp.RequestHandler子实例在__init__期间没有self.request

我使用修改过的webapp.RequestHandler处理我的应用程序中的请求:

class MyRequestHandler(webapp.RequestHandler):
    """
    Request handler with some facilities like user.
    self.out is the dictionary to pass to templates 
    """
    def __init__(self, *args, **kwargs):
        super(MyRequestHandler, self).__init__(*args, **kwargs)
        self.out = {
            'user': users.get_current_user(),
            'logout_url': users.create_logout_url(self.request.uri)
            }

    def render(self, template_name):
        """
        Shortcut to render templates
        """
        self.response.out.write(template.render(template_name, self.out))


class DeviceList(MyRequestHandler):
    def get(self):
        self.out['devices'] = GPSDevice.all().fetch(1000)
        self.render('templates/device_list.html')
Run Code Online (Sandbox Code Playgroud)

但我得到一个例外:

line 28, in __init__
    self.out['logout_url'] = users.create_logout_url(self.request.uri)
AttributeError: 'DeviceList' object has no attribute 'request'
Run Code Online (Sandbox Code Playgroud)

当导致异常的代码移出__init__一切都很好时:

class MyRequestHandler(webapp.RequestHandler):
    """
    Request handler with some facilities …
Run Code Online (Sandbox Code Playgroud)

google-app-engine request-headers

0
推荐指数
1
解决办法
986
查看次数