小编kis*_*rgy的帖子

Django readonly字段仅在更改时,但在创建时不会

我有一个名为ManyToManyField 的Team模型players,我希望能够Player在创建时将s 添加到新团队,但在创建后无法修改它.

如果我players只读这样的字段:

# admin.py
class TeamAdmin(admin.ModelAdmin)
    readonly_fields = ['players']

admin.site.register(Team, TeamAdmin)
Run Code Online (Sandbox Code Playgroud)

我将无法将玩家添加到新玩家Team.如何使players字段"创建后只读"或类似的东西?

django django-models django-admin

20
推荐指数
1
解决办法
4049
查看次数

多表继承模型与同一两个模型之间的简单一对一关系有什么区别?

这些实现之间有什么区别?Django有什么不同(除了继承Meta orderingget_latest_by属性)?

1.

# models.py
from django.db import models

class Place(models.Model):
    name = models.CharField(max_length=50)

class Restaurant(models.Model):
    place = models.OneToOneField(Place)
    serves_pizza = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

2.

class Place(models.Model):
    name = models.CharField(max_length=50)

class Restaurant(Place):
    serves_pizza = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

3.

class Place(models.Model):
    name = models.CharField(max_length=50)

class Restaurant(Place):
    place = models.OneToOneField(Place, parent_link=True)
    serves_pizza = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)

django orm inheritance model

15
推荐指数
1
解决办法
1560
查看次数

创建时Django模型超出了最大递归深度

我有一个我的Django模型的这个奇怪的问题,我能够解决它,但不明白发生了什么.

这些是模型:

class Player(models.Model):
    facebook_name = models.CharField(max_length=100)
    nickname = models.CharField(max_length=40, blank=True)

    def __unicode__(self):
        return self.nickname if self.nickname else self.facebook_name


class Team(models.Model):
    name = models.CharField(max_length=50, blank=True)
    players = models.ManyToManyField(Player)

    def __unicode__(self):
        name = '(' + self.name + ') ' if self.name else ''
        return name + ", ".join([unicode(player) for player in self.players.all()])
Run Code Online (Sandbox Code Playgroud)

每当我制作一个新的(空的)Team物体并想要从中获得players它时,我得到了一个RuntimeError: maximum recursion depth exceeded.例如:

>>> team = Team()
>>> team.players
    Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File …
Run Code Online (Sandbox Code Playgroud)

django recursion model django-orm

10
推荐指数
1
解决办法
2595
查看次数

如何通过子树合并将git存储库与子模块合并到另一个子模块中?

我有一个dotfiles存储库.我想将另一个与子模块(prezto)合并到其中,因此我可以方便地将所有内容放在一个存储库中,而不会出现子模块的不便.

我怎样才能将prezto与其所有子模块合并到我的dotfiles存储库中?

我可以使用子模块,我可以使用"老式"方式或使用较新的git子树工具拆分和合并子树.

我只是不知道如何做这个具体案例.

git merge git-submodules git-subtree pretzo

10
推荐指数
1
解决办法
533
查看次数

如何使用Python中的模拟文件对象进行单元测试?

我有一个类,我通过给出一个文件名来实例化parser = ParserClass('/path/to/file'),然后我调用parser.parse()打开并读取文件的方法.
现在我想进行单元测试,如果内部发生了不好的事情:

with open(filename, 'rb') as fp:
    // do something
Run Code Online (Sandbox Code Playgroud)

将引发正确的异常,所以我想嘲笑__builtin__.open这样:

from mock import MagicMock, patch
from StringIO import StringIO

test_lines = StringIO("""some test lines, emulating a real file content""")
mock_open = MagicMock(return_value=test_lines)
with patch('__builtin__.open', mock_open):
    self.mock.parse()
Run Code Online (Sandbox Code Playgroud)

但这给了我一个AttributeError: StringIO instance has no attribute '__exit__'.
我认为StringIO的行为与文件对象完全相同,但似乎并非如此.

如何使用模拟对象的给定内容(test_lines)测试此方法?我应该用什么呢?

python unit-testing mocking python-2.7

9
推荐指数
2
解决办法
9618
查看次数

如何在python中使用winapi SetWinEventHook?

我想获得从特定应用程序弹出的每个新Dialog的句柄.
我明白我应该设置一个钩SetWinEventHook这是user32.dll在Windows,但我不知道该怎么做,在蟒蛇.你能举个例子吗?

python winapi

7
推荐指数
1
解决办法
1630
查看次数

Apache重写规则将所有请求重定向到包含另一个.htaccess和重写规则的子目录

我的网络服务器上有公共和私人项目.我将所有公共内容放入网络服务器根目录,我有一个private文件夹,我只能从本地网络(由.htaccess设置)到达.

我想简单地将每个私有项目放在private文件夹中并自动处理请求,但希望URL看起来像是从webroot提供的.
例如,如果private/project1我想使用URL http://example.com/project1来提供该文件夹,并且不想更改URL.

这个简单的重写:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ private/$1           
Run Code Online (Sandbox Code Playgroud)

工作,但当我有private/project2另一个.htaccess:

Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /project2/

<Files .*>
       Order Deny,Allow
       Deny From All
</Files>

# Allow asset folders through
RewriteRule ^(assets/.+) - [L]

# Protect files from being viewed
RewriteRule ^(uploads.+) - [F,L]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L]

</IfModule>
Options -Indexes
Run Code Online (Sandbox Code Playgroud)

然后会出现静态内容,但链接会被破坏.我应该修改什么才能工作?

此外,如果我有一个 …

apache mod-rewrite

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

不能从同一个类的相同方法调用相同的静态方法

我的Codeigniter 2.1.0应用程序中有这个错误控制器:

<?php

class Error extends CI_Controller
{
    public function __construct()
    {
        parent::__construct();
    }

    public function index()
    {
        set_status_header(404);
        $data->menuItems = Main::_menu();
        $data->title = "404 error !";
        $data->pageview = 'templates/404';
        $this->load->view('templates/main', $data);
    }

    public function facebook()
    {

        set_status_header(404);            
        $data->menuItems = Main::_menu();
        $data->title = "Facebook error !";
        $data->pageview = "templates/facebook_error";
        $this->load->view('templates/main', $data);
    }
}
?>
Run Code Online (Sandbox Code Playgroud)

主控制器_menu:

<?php
class Main extends CI_Controller
{
    // ...  a lot of methods here ...
    public static function _menu()
    {
            static $menuItems = array( //just a …
Run Code Online (Sandbox Code Playgroud)

php error-handling controller codeigniter

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

如何在PyQt或PySide中更改最小化事件行为?

我正在开发一个Qt应用程序并用这种方式改变了closeEvent虚函数的关闭行为:

class MainWindow(QMainWindow):
    def closeEvent(self, event):
            event.ignore()
            self.hide()
            self.trayicon.showMessage('Running', 'Running in the background.')
Run Code Online (Sandbox Code Playgroud)

这按预期工作.如果我event.ignore()按预期删除应用程序退出,一切都很好.

我也想控制最小化事件,所以当用户点击标题栏上的最小化按钮时,我想移动窗口而不是最小化.我无法使用hideEvent虚函数,因为无论如何事件都会被发送到窗口,所以这段代码:

def hideEvent(self, event):
    event.ignore()
    self.move(0,0)
Run Code Online (Sandbox Code Playgroud)

将窗口移动到左上角然后将其最小化.event.ignore()这里没有效果,所以我尝试使用QtCore.QObject.event这种方式:

def event(self, event):
    if event.type() == QEvent.WindowStateChange:
        if self.isMinimized():
            event.ignore()
            self.move(0,0)
            return True
    return False
Run Code Online (Sandbox Code Playgroud)

窗口移动但最小化.这有什么问题?如何完全覆盖最小化事件?

python qt pyqt pyside

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

这些字符串在Python解释器中如何表示内部?我不明白

# -*- coding: utf-8 -*-

a = 'éá??úöüó€'
print type(a)    # <type 'str'>
print a          # éá??úöüó€
print ord(a[-1]) # 172
Run Code Online (Sandbox Code Playgroud)

这为什么有效?不应该这个SyntaxError: Non-ASCII character '\xc3' in file ...吗?字符串中有unicode文字.

当我用它u作为前缀时,结果是不同的:

# -*- coding: utf-8 -*-

a = u'éá??úöüó€'
print type(a)    # <type 'unicode'>
print a          # éá??úöüó€
print ord(a[-1]) # 8364
Run Code Online (Sandbox Code Playgroud)

为什么?python中的内部表示有什么区别?我怎么能亲自看到它?:)

python string unicode python-2.7

5
推荐指数
1
解决办法
650
查看次数