这就是我的模型的样子:
class QuestionTagM2M(models.Model):
tag = models.ForeignKey('Tag')
question = models.ForeignKey('Question')
date_added = models.DateTimeField(auto_now_add=True)
class Tag(models.Model):
description = models.CharField(max_length=100, unique=True)
class Question(models.Model):
tags = models.ManyToManyField(Tag, through=QuestionTagM2M, related_name='questions')
Run Code Online (Sandbox Code Playgroud)
我真正想做的就是在创建给定的多人关系时添加时间戳.这很有意义,但它也增加了一些复杂性.除了删除.add()功能之外[尽管事实上我真正添加的唯一字段是自动创建的,所以它在技术上不应该再干扰它了].但我可以忍受这一点,因为我不介意做额外的事情,QuestionTagM2M.objects.create(question=,tag=)如果这意味着获得额外的时间戳功能.我的问题是我真的很想能够filter_horizontal在管理员中保存我的javascript小部件.我知道文档说我可以用内联代替,但因为没有其他字段实际上是内联除了外键,这是太笨重Tag反正.此外,在我的数据库模式的更大方案中,我的Question对象已经在我的管理页面上显示为内联,并且由于Django不支持admin [yet]中的嵌套内联,我无法为给定的选择标记题.有没有办法覆盖formfield_for_manytomany(self, db_field, request=None, **kwargs)或类似的东西允许我使用漂亮的filter_horizontal小部件和自动创建date_added列到数据库?这似乎是django应该能够本地执行的东西,只要您指定中间的所有列都是自动创建的(除外键之外)可能与auto_created=True?或类似的东西
我在我的git存储库中添加了一个新分支,用于我添加的新功能,忘记明确检查它.我已经改变了很多文件而没有提交,但我希望能够将这些更改提交给备用分支,而不是主分支.我怎么能安全地做到这一点?
理想情况下,我想使用POST将HTTP请求发送到包含设备令牌的推送通知服务器以及一些用户定义的设置.从那里我可以在服务器上设置一个php脚本来处理传入的数据并将其输入到sql表中.如果这是唯一的方法,我将如何从Objective C启动和HTTP请求?
mysql objective-c push-notification apple-push-notifications
我希望自动将构建日期和内部版本号添加到我的Info.plist文件中,仅用于存档iOS应用程序的构建.
#!/bin/bash
# This was taken from variations from:
# http://davedelong.com/blog/2009/04/15/incrementing-build-numbers-xcode
if [ "$CONFIGURATION" != "Release" ]
then
exit
fi
buildPlist="$SRCROOT/$PROJECT_NAME/$PROJECT_NAME-Info.plist"
# Get the existing buildVersion and buildNumber values from the buildPlist
buildVersion=$(/usr/libexec/PlistBuddy -c "Print CFBuildVersion" "$buildPlist")
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBuildNumber" "$buildPlist")
buildDate=$(date "+%s")
# Increment the buildNumber
buildNumber=$(($buildNumber + 1))
# Set the version numbers in the buildPlist
/usr/libexec/PlistBuddy -c "Set :CFBuildNumber $buildNumber" "$buildPlist"
/usr/libexec/PlistBuddy -c "Set :CFBuildDate $buildDate" "$buildPlist"
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildVersion.$buildNumber" "$buildPlist"
/usr/libexec/PlistBuddy -c …Run Code Online (Sandbox Code Playgroud) 我在Django中设置了一个复杂的数据库模型,我必须根据过滤数据进行大量计算.我有一个Test对象,一个TestAttempt对象和一个UserProfile对象(外键返回测试,外键返回用户配置文件).我运行的方法是TestAttempt计算测试分数(基于用户提供的多个选项与每个测试相关的正确答案).然后我运行的另一种方法是Test根据每个关联TestAttempt的方法计算平均测试分数.但有时候我只希望平均值基于TestAttempt与特定集合链接的相关联的子集UserProfiles.因此,不要以这种方式计算特定测试的平均测试分数:
[x.score() for x in self.test_attempts.all()]
Run Code Online (Sandbox Code Playgroud)
然后平均这些值.我做这样的查询:
[x.score() for x in self.test_attempts.filter(profile__id__in=user_id_list).all()]
Run Code Online (Sandbox Code Playgroud)
其中user_id_list是UserProfile id的特定子集,我希望以列表的形式找到平均测试分数.我的问题是:如果user_id_list确实是整个集合UserProfile(因此过滤器将返回相同的self.test_attempts.all())并且大部分时间都是这种情况,检查这种情况是否有效,如果是,则不执行过滤器?或__in查找是否足够有效,即使user_id_list包含所有用户,运行过滤器也会更有效.另外,我是否需要担心生成的test_attempts distinct()?或者他们不可能用我的queryset结构重复复制?
编辑:对于任何有兴趣查看原始SQL查询的人来说,它看起来像这样没有过滤器:
SELECT "mc_grades_testattempt"."id", "mc_grades_testattempt"."date",
"mc_grades_testattempt"."test_id", "mc_grades_testattempt"."student_id" FROM
"mc_grades_testattempt" WHERE "mc_grades_testattempt"."test_id" = 1
Run Code Online (Sandbox Code Playgroud)
这与过滤器:
SELECT "mc_grades_testattempt"."id", "mc_grades_testattempt"."date",
"mc_grades_testattempt"."test_id", "mc_grades_testattempt"."student_id" FROM
"mc_grades_testattempt" INNER JOIN "mc_grades_userprofile" ON
("mc_grades_testattempt"."student_id" = "mc_grades_userprofile"."id") WHERE
("mc_grades_testattempt"."test_id" = 1 AND "mc_grades_userprofile"."user_id" IN (1, 2, 3))
Run Code Online (Sandbox Code Playgroud)
请注意,数组(1,2,3)只是一个例子
需要在网络上打开哪些网络服务,端口号,传出传入或两者,以便ipod touch接收Apple推送通知?
我知道发送apns时要设置的传出端口号.唯一的问题是,在我的学校,几乎每个传出(和传入)端口都被阻止,因此APN不起作用.我确信,如果我与网络管理员交谈并告诉他哪个端口要解锁,他就会这样做.所以我的问题是:需要在网络上打开哪些网络服务,端口号,传出传入或两者,以便ipod touch接收Apple推送通知?
我正在尝试使用 django.core.mail 使用默认后端发送电子邮件,但它似乎不起作用。我已经在设置文件中设置了电子邮件凭据、服务器和端口号,但是每当我尝试运行电子邮件的 send() 方法时,该命令就会无限期挂起。
目前,我正在开发一个使用Core Data的应用程序.我的一个托管对象有一个属性,它以一个整数(0-6)跟踪星期几(星期日 - 星期六).为了按日排序对象以及节省的开销较少,我绝对相信最佳做法是将日期保存为索引,然后在运行时转换为字符串.问题成为将索引转换为字符串对应日期的最佳实践.即.0 => @"星期日"和6 => @"星期六".我显然可以使用NSCalendar和NSDate以及NSDateComponents来实现这一点.考虑到任务的简单性,这似乎是一种非常迂回的方式.当然,这样定义的简单NSString数组可以解决这个问题:
NSString *dayOfWeek[7] = {@"Sunday",@"Monday",@"Tuesday",@"Wednesday",@"Thursday",@"Friday'"@"Saturday"};
Run Code Online (Sandbox Code Playgroud)
但后来我发现自己一遍又一遍地重新定义这个变量.全局常量NSString可以工作.我的另一个想法是创建一个使用dayOfWeek数组然后将其包含在需要它的文件中的函数.你怎么看.什么是最佳做法?
我正在试图弄清楚如何创建一个保留而不是复制其键的NSMutableDictionary.我已经实现了 - (NSUInteger)哈希和 - (id)isEqual:对于我想要的密钥,我只是弄清楚要在回调中指定哪些选项.
CFDictionaryKeyCallBacks keyCallbacks = { 0, NULL, NULL, CFCopyDescription, CFEqual, NULL };
self.commonParents = (NSMutableDictionary*)CFBridgingRelease(CFDictionaryCreateMutable(nil, 0, &keyCallbacks, &kCFTypeDictionaryValueCallBacks));
Run Code Online (Sandbox Code Playgroud)
上面的代码在ARC中正确使用对键的弱引用,但是如果我想要强引用呢?关键回调应该是什么样的?
我正在制作一个具有二维点的游戏,每个游戏都有一个布尔属性(占用/未占用).我认为实现这一目标的最佳方法是创建一个简单的布尔数组.这比创建可变阵列更有效.我只是混淆了实现这一目标的最佳方法.问题是我在初始化电路板对象之前不知道电路板的大小.界面如下所示:
@interface TouchBoard : NSObject{
NSInteger height,width;
BOOL dots[10][10];
}
Run Code Online (Sandbox Code Playgroud)
和这样的实现:
-(id)initWithHeight:(NSInteger)rows Width:(NSInteger)columns{
if ( self = [super init]){
height = rows;
width = columns;
dots[height][width];
}
return self;
}
Run Code Online (Sandbox Code Playgroud)
麻烦的是,在界面中,如果我试图用动态数量的索引,点[] []声明点变量,它只会给我一个错误.显然,在初始化对象之前,我不知道数组的大小,但在此之后它不会改变,只有它的元素才会从true/false改变.
完成此任务的最佳方法是什么?
如果我使用dictionaryWithObjects:forKeys:,并且我的数组键碰巧有重复,会发生什么?我假设重复键的最后一个实例将是与键相关联的值; 那是对的吗?
objective-c ×5
django ×3
ios ×2
bash ×1
cocoa ×1
django-admin ×1
email ×1
git ×1
git-branch ×1
mysql ×1
nsdictionary ×1
port-number ×1
push ×1
xcode ×1