使用Django Grappelli管理工具,我可以配置一个ForeignKey(多对一)字段显示为自动完成小部件,而不是下拉字段,如下所示:
class MyModel(models.Model):
related = models.ForeignKey(RelatedModel, related_name='my_models')
class MyModelAdmin(admin.ModelAdmin):
raw_id_fields = ('related',)
autocomplete_lookup_fields = {
'fk': ['related'],
}
Run Code Online (Sandbox Code Playgroud)
不过,我想要做的就是在定义自动完成构件查找其他(一到多)方向(即在管理的RelatedModel,所以我可以查找一个或多个为MyModel对象).现在,我只是使用ModelMultipleChoiceField:
class RelatedModelForm(forms.ModelForm):
class Meta:
model = RelatedModel
fields = ('my_models',)
my_models = forms.ModelMultipleChoiceField(queryset=MyModel.objects.all())
def __init__(self, *args, **kwargs):
super(SaleAdminForm, self).__init__(*args, **kwargs)
if self.instance:
self.fields['foods'].initial = self.instance.foods.all()
def save(self, *args, **kwargs):
instance = super(RelatedModelForm, self).save(commit=False)
self.fields['my_models'].initial.update(related=None)
self.cleaned_data['my_models'].update(related=instance)
return instance
class RelatedModelAdmin(admin.ModelAdmin):
model = RelatedModel
form = RelatedModelForm
Run Code Online (Sandbox Code Playgroud)
但是,有太多的MyModel实例可以很好地处理这种类型的小部件.为MyModel对象提供一个或多个自动完成查找小部件代替ModelMultipleChoiceField是理想的.
Grappelli有一种简单的方法可以为FK关系和m2m关系进行自动完成查找,但是有没有办法实现一对多的关系?看起来像那些自动填充物和其他两种类型的关系一样有用,所以我猜想Grappelli也会提供一种简单的方法,但我找不到它......
django autocomplete one-to-many django-admin django-grappelli
是否有一种简单的方法可以关闭 django 管理中某些/所有列的可排序性和/或指定哪些列是可排序的?
我知道我可以通过 javascript 手动禁用排序,但这有点 hacky,我希望有更好的或内置的方式。
我正在尝试实现类似于以下管理列表的拖放排序:http : //djangosnippets.org/snippets/2870/,但如果表按其他排序,则拖放排序没有意义- 比位置列。我这样做的表永远不会是一个大表,因此用户没有理由需要按位置列以外的其他方式排序,并且允许它按另一列排序只会增加混乱。
我是否需要 99 美元的 Apple 开发者帐户才能让我的应用程序避免“ [此应用程序]可以\xe2\x80\x99t 被打开,因为它来自身份不明的开发者”警告,或者我可以通过免费开发者来避免该警告吗?帐户?我了解我的客户可以通过更改其 Gatekeeper 设置来避免该警告,但我想知道如何才能做到这一点,以便我的应用程序不会要求我的客户这样做。
\n\n我是否需要 99 美元的 Apple 开发者帐户才能避免“ [此应用程序]是从互联网下载的应用程序。您确定要打开它吗? ”警告?开发者帐户是否有帮助我避免该警告,或者该警告对于非 App Store 应用程序是否始终存在?
\n\n我知道我需要 99 美元的帐户才能将应用程序提交到 Mac App Store,但我不确定是否要朝这个方向发展。
\n我正在开发一个小型的OSX应用程序(它是一个菜单栏应用程序).当我最初构建/启动应用程序时,它会转到前台,所有其他应用程序都会转到后台(就像它们应该的那样).当我点击另一个应用程序时,该应用程序出现并且我的应用程序返回(应该如此),但是当我点击我的应用程序时,它不会再次出现.另一个应用程序仍然是最前面的应用程序(无论其他应用程序是什么).
除了它很奇怪之外,这个问题的一大问题是当我的应用程序不是最前面的应用程序时,没有任何悬停操作或游标可以工作.
有没有办法以编程方式强制它到前面?如何点击它不会带来前进?...
我有一个带有几个代码块的Objective-c应用程序,我只希望一个线程能够一次访问它.使用@synchronized(self)块可以正常工作.
但是,我有一个块,我希望它跳过块,如果另一个线程在其中一个@synchronized块中,而不是等待.有没有办法简单地测试自己(或任何我的锁定对象)是否被另一个同步块保持?
// block 1 - wait until lock is available
@synchronized(self) {
...
}
...
// block 2 - wait until lock is available
@synchronized(self) {
...
}
...
// block 3 - wait until lock is available
@synchronized(self) {
...
}
...
// block 4 - skip if lock is not immediately available - no waiting!
howDoISkipIfLockIsNotAvailable(self) {
...
}
Run Code Online (Sandbox Code Playgroud) 据我所知,我的应用程序中有一个强制刷新功能,即设置“常规方式”:
UIRefreshControl *refreshControl = [[UIRefreshControl alloc] init];
refreshControl.attributedTitle = [[NSAttributedString alloc] initWithString:@"Pull to Refresh"];
[refreshControl addTarget:self action:@selector(refreshPage) forControlEvents:UIControlEventValueChanged];
self.refreshControl = refreshControl;
Run Code Online (Sandbox Code Playgroud)
令人耳目一新的部分工作正常。完成刷新后,我致电
[self.refreshControl endRefreshing]
Run Code Online (Sandbox Code Playgroud)
在这一点上,它似乎忽略了该调用,并继续显示拉动刷新的“间隙”,仅在没有微调器的情况下:
(我在该行确实有一个断点,以验证是否确实调用了endRefreshing IS)
如果我用拇指摇动页面(将其略微拉下而不将其拉到足以触发另一个拉动刷新的位置),它将自动修复并弹回原位。但是为什么我打电话时不回头[self.refreshControl endRefreshing]?有什么办法可以以编程方式强制其弹回吗?
我也尝试过endRefreshing延迟通话:
[self.refreshControl performSelector:@selector(endRefreshing) withObject:nil afterDelay:0.0]
Run Code Online (Sandbox Code Playgroud)
但它仍然忽略该呼叫。
我是Apache Cayenne的新手,我正在尝试我的第一个项目.我正在尝试使用CayenneModeler 的工具>重新设计数据库架构功能来反向设计SQL Server数据库.
我试图创建一个新的"已保存的数据源".我从其适配器列表中选择了"org.apache.cayenne.dba.sqlserver.SQLServerAdapter",并且CayenneModeler自动填写了JDBC Driver字段并添加了一个示例DB URL.我修改了DB URL,提供了用户名/密码,单击"继续",然后我收到以下错误:
驱动程序加载错误:com.microsoft.sqlserver.jdbc.SQLServerDriver
我认为这意味着CayenneModeler默认情况下确实有sqlserver的驱动程序(?)但我没有看到将CayenneModeler指向任何其他驱动程序的方法......
任何Cayenne专家知道我可能做错了什么?有没有办法给CayenneModeler提供所需的驱动程序,假设这是问题?或者如果失踪的司机不是问题,有谁知道是什么?
在开发 Cordova/Phonegap 应用程序时,一旦初始设置就位,通常所需要的就是定期将 www/ 目录与您所针对的每个平台同步并进行测试。在这方面,运行“cordova build”是有效的,但它确实很慢,而且不仅仅是同步 www/ 目录。
Cordova CLI api的文档有点少……它说明了您需要运行哪些命令才能让您的应用程序在各种平台上运行,但几乎没有说明每个命令实际执行或应该执行的操作。项目初始设置后是否还需要运行“cordova build”?或者当我想测试一个小的更改时,是否有另一个(更快的)CLI 命令用于同步 www/ 目录?我尝试了“cordova prepare”,但它似乎只为每个平台构建了 config.xml 文件。缓慢的“cordova build”命令真的是准备我的应用程序进行测试的唯一方法(除了构建我自己的自定义同步器)?
顺便说一句,让我受不了的不仅仅是“cordova build”命令的缓慢,命令也有点脆弱。对于我遇到的特定问题,我有一个单独的 stackoverflow 问题,但我希望“构建”命令可以完全避免,并且有人可能知道参考文档未涵盖的更好的同步命令,并且/ 或了解一些更好的 CLI API 文档。
我正试图检测平移手势何时结束.在Objective-C下,我会做类似以下的事情:
- (void)panGesture:(UIPanGestureRecognizer *)gesture {
if (gesture.state == UIGestureRecognizerStateEnded) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
在我的Swift项目中,它无法识别UIGestureRecognizerStateEnded......也许我只需要导入不同的东西(?)
我正在尝试使用我的PhoneGap/Cordova应用程序进行谷歌分析.
默认情况下,analytics.js lib不会从file:// type urls发送请求.我发现从这个站点,以及它指出的StackOverflow问题,我可以通过配置GA来使分析库使用本地存储而不是cookie来跟踪客户端ID:
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','http://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-XXXXX-1', 'auto', {
'allowLinker': true,
'storage': 'none','clientId':localStorage.getItem('gaClientId')
});
ga(function(t){localStorage.setItem('gaClientId',t.get('clientId'));});
Run Code Online (Sandbox Code Playgroud)
然后我可以通过添加以下内容让库从非http/https网址发送请求:
ga('set', 'checkProtocolTask', null);
Run Code Online (Sandbox Code Playgroud)
现在,我可以从浏览器控制台看到该库正在向google-analytics.com发送页面视图,类似于以下内容:
http://www.google-analytics.com/collect?v=1&_v=j31&a=6458293880&t=pageview&_s=1&dl=file%3A%2F%2F%2Fpath%2Fto%2Findex.html&ul=en-us&de=ISO-8859-1&sd=24-bit&sr=1440x900&vp=1283x150&je=1&fl=16.0%20r0&_u=cGAAAAQB~&cid=389492833.14589283847&tid=UA-XXXXX-1&z=1277371227
Run Code Online (Sandbox Code Playgroud)
但是,在google-analytics.com方面,Google一旦收到请求就会忽略该请求,并且我的帐户中没有任何内容显示.如果我手动将上述网址的"dl = file ..."部分更改为"dl = http ...",那么Google会接受它,我会立即在我帐户的"实时"标签下看到该请求.
所以,似乎我已经正确设置了浏览器方面,但......
(如果我不得不选择一个答案,我想我可能更喜欢对#2而不是#1的答案.)
我知道有一个用于谷歌分析的cordova插件,但我没有太多运气让这个工作,并且,即使我让它工作,我需要我的应用程序能够登录到多个谷歌分析帐户,我不认为该插件可以做.
我在我的视图中添加了一个NSBox,我将填充颜色设置为我想要的颜色:

但是颜色不会出现在Interface Builder中,并且在我运行应用程序时不会显示.我错过了什么?
我也试过通过编程设置它
[self.myBox setFillColor:[NSColor greenColor]];
Run Code Online (Sandbox Code Playgroud)
但填充颜色仍然不会改变......
我正在尝试制作一些小圆圈指示器,类似于您通常会在幻灯片轮播底部看到的圆圈指示器,以指示该幻灯片在哪个幻灯片上。到目前为止,我在此JS小提琴中是:http : //jsfiddle.net/LSmSS/。
这是HTML:
<ul class="carousel-indicators">
<li></li>
<li class="active"></li>
<li></li>
<li></li>
<li></li>
</ul>
Run Code Online (Sandbox Code Playgroud)
和CSS:
.carousel-indicators {
position: absolute;
bottom: 5px;
left: 50%;
z-index: 15;
width: 100px;
margin: 0 0 0 -50px;
list-style: none;
text-align: center;
}
.carousel-indicators li {
display: inline-block;
width: 8px;
height: 8px;
margin-left: 2px;
margin-right: 2px;
text-indent: -999px;
border: 1px solid #333;
background-color: #333;
border-radius: 5px;
cursor: pointer;
}
.carousel-indicators .active {
background-color: white;
}
Run Code Online (Sandbox Code Playgroud)
这似乎适用于大多数浏览器,包括默认的Android浏览器:
但是在Android WebView中,圆圈显示为细线,并且似乎忽略了height属性:

我已经在Android 2.3、4.0和4.1上尝试过此方法,但结果相同。
我的CSS出问题了,还是Android渲染器只是垃圾?如果是后者,是否有CSS专家知道如何设置<ul>的样式,使其可以在Android WebView中正确显示?我当然不关心Android搞砸的所有其他JSFiddle东西,只是那些小圈子。实际上,我什至不关心它们是否是圆形...如果有人能够弄清楚如何使其不忽略我的height属性,而只是显示一些小方块或类似的东西,我也会对此感到满意。:)
编辑 …
objective-c ×5
ios ×4
xcode ×3
android ×2
cordova ×2
django ×2
django-admin ×2
macos ×2
autocomplete ×1
cordova-3 ×1
css ×1
iphone ×1
mutex ×1
nsbox ×1
one-to-many ×1
sql-server ×1
swift ×1
uitableview ×1
webview ×1