我有一个名为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有什么不同(除了继承Meta ordering和get_latest_by属性)?
# 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)
class Place(models.Model):
name = models.CharField(max_length=50)
class Restaurant(Place):
serves_pizza = models.BooleanField()
Run Code Online (Sandbox Code Playgroud)
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模型的这个奇怪的问题,我能够解决它,但不明白发生了什么.
这些是模型:
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) 我有一个dotfiles存储库.我想将另一个与子模块(prezto)合并到其中,因此我可以方便地将所有内容放在一个存储库中,而不会出现子模块的不便.
我怎样才能将prezto与其所有子模块合并到我的dotfiles存储库中?
我可以使用子模块,我可以使用"老式"方式或使用较新的git子树工具拆分和合并子树.
我只是不知道如何做这个具体案例.
我有一个类,我通过给出一个文件名来实例化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)测试此方法?我应该用什么呢?
我想获得从特定应用程序弹出的每个新Dialog的句柄.
我明白我应该设置一个钩SetWinEventHook这是user32.dll在Windows,但我不知道该怎么做,在蟒蛇.你能举个例子吗?
我的网络服务器上有公共和私人项目.我将所有公共内容放入网络服务器根目录,我有一个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)
然后会出现静态内容,但链接会被破坏.我应该修改什么才能工作?
此外,如果我有一个 …
我的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) 我正在开发一个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)
窗口移动但最小化.这有什么问题?如何完全覆盖最小化事件?
# -*- 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 ×4
django ×3
model ×2
python-2.7 ×2
apache ×1
codeigniter ×1
controller ×1
django-admin ×1
django-orm ×1
git ×1
git-subtree ×1
inheritance ×1
merge ×1
mocking ×1
mod-rewrite ×1
orm ×1
php ×1
pretzo ×1
pyqt ×1
pyside ×1
qt ×1
recursion ×1
string ×1
unicode ×1
unit-testing ×1
winapi ×1