我有一种情况,我想使用Meta选项unique_together
来强制执行某个规则,这里是中间模型:
class UserProfileExtension(models.Model):
extension = models.ForeignKey(Extension, unique=False)
userprofile = models.ForeignKey(UserProfile, unique=False)
user = models.ForeignKey(User, unique=False)
class Meta:
unique_together = (("userprofile", "extension"),
("user", "extension"),
# How can I enforce UserProfile's Client
# and Extension to be unique? This obviously
# doesn't work, but is this idea possible without
# creating another FK in my intermediary model
("userprofile__client", "extension"))
Run Code Online (Sandbox Code Playgroud)
这是UserProfile:
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
client = models.ForeignKey(Client)
Run Code Online (Sandbox Code Playgroud)
谢谢.
我总是使用Python的timeit
库为我的小Python程序计时.现在我正在开发一个Django应用程序,我想知道如何计算我的Django函数,尤其是查询.
例如,我def index(request)
在views.py中有一个在加载索引页面时会执行一些操作.如何timeit
在不改变现有功能的情况下使用此特定功能的时间?
在我的view.py中,我有两个函数,一个处理来自表单的输入并输出一个已过滤的列表,另一个用于将此列表导出为CSV.
这是我的第一个函数的返回:
return render_to_response('templateX.html',
{
'queryset': queryset,
'filter_form': filter_form,
'validated': validated,
},
context_instance = RequestContext(request)
)
Run Code Online (Sandbox Code Playgroud)
这是导出功能:
def export_to_csv(request):
# get the response object, this can be used as a stream.
response = HttpResponse(mimetype='text/csv')
# force download.
response['Content-Disposition'] = 'attachment;filename=export.csv'
# the csv writer
writer = csv.writer(response)
qs = request.session['queryset']
for cdr in qs:
writer.writerow([cdr['calldate'], cdr['src'], cdr['dst'], ])
return response
Run Code Online (Sandbox Code Playgroud)
我不知道如何让查询集从我的第一个功能,它包含我想在我的CSV和我export_to_csv功能使用它的项目的列表.或者最好的方法是组合这两个功能,并让用户点击一个复选框,无论他/她是否要下载CSV文件.任何帮助,将不胜感激.
一个人(一个正在学习计算机基础知识的老年人)让我制定了一个程序,可以通过繁重的工作类型的任务为他节省大量时间.我用Python制作了脚本,它很简单,命令行,从用户那里获取输入并将输出保存到文件中就是这样.
我的第一个问题与脚本的输出有关:它不一定是GUI(我没有GUI开发经验,现在没有时间),但我也认为它不应该像TXT文件那么简单,因为输出将是40,000多行,并打算用于打印(我知道这是浪费纸张,我努力让他不要这样做,但这是他的选择).我应该输出什么文件格式?也许是一个HTML文件?
接下来,他让我把它刻录成一张CD,他可以把它放在他的笔记本电脑中并直接运行并将输出保存到'C:'.根据他的计算能力,它必须尽可能简单,并且需要最少的"售后服务".整个程序在他的计算机中占用的大小没有限制.
我尝试使用PY2EXE创建我的Python脚本的EXE但是当我执行.EXE时,它在同一文件夹上创建输出文件,打开没有'窗口',要求没有输入,并运行FOREVER,输出文件大小增加按20mb/s!当然,当我在常规python上运行它时,它运行得非常好.我查看了其他stackoverflow线程并遵循'bundle_files':1参数但仍然......我正在使用Python2.7,我应该尝试PyInstaller吗?如果是的话,人们可以指点我一个好的教程吗?
提前致谢
每当我在管理界面中保存模型时,它都会显示通常的"已成功保存的消息".但是,我想知道是否可以自定义此消息,因为我想要警告用户他刚刚保存的内容以及这些操作的含义.
class PlanInlineFormset(forms.models.BaseInlineFormset):
def clean(self):
### How can I detect the changes?
### (self.changed_data doesn't work because it's an inline)
### and display what he/she just changed at the top AFTER the successful save?
class PlanInline(admin.TabularInline):
model = Plan
formset = PlanInlineFormset
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用formtastic在active_admin模型中构建一个表单.问题是我需要在表单内部或周围直接使用某个脚本标记和其他原始HTML内容.
我正在使用普通的表单块:
form do |f|
f.inputs :name => "User Details", :for => :user do |user_form|
user_form.input :first_name, :required => true
...
Run Code Online (Sandbox Code Playgroud)
如何在两者之间嵌入一个简单的div标签?甚至是脚本标签?
我想过使用a render :partial
,但我想先知道上面的方法是否可行.谢谢!
我有一个可执行文件(使用py2exe从python转换为exe),它输出的数字列表可能是0-50K行或更多.在开发时,我只是使用简单的f.write将它们保存到TXT文件中.这个人想在纸上打印这个输出!(不要问为什么哈哈)
所以,我想知道我是否可以输出像HTML这样的东西?XML?什么东西可以显示50K行,也许3列的表格,也可以在没有附加程序的任何PC上运行?建议?
编辑:
关于CSV:
在大多数情况下,我认为最好的方法是制作CSV.我不是反对它,而是我认为其他人可能会发现洛特的答案对他们的案件有用.对不起,就我的约束而言,我没有在我的问题中解释得那么好.
我的约束是:用户没有办公套件,没有安装python.在安装干净的Windows xp/vista之后,可以考虑一台最低限度的PC,可能是Internet Explorer 7或8.这台PC必须能够打开我的输出文件并允许合理的查看,搜索和打印.
我正在开发一个我有模型的项目:Client,User和Extensions,这只是为了简化.用户必须与一个客户关联才能拥有分机号码.用户可以拥有扩展名,例如100和101.与另一个客户端关联的另一个用户可以具有相同的扩展名100和101.因此,扩展在我的数据库中不是唯一的,因此它允许用户在具有两个相同的扩展号时我在管理中添加它,这是错误的.如何确定此用户中是否已包含要添加的分机号码?
class Extension(models.Model):
user = models.ForeignKey(User, verbose_name=u"User")
date_created = models.DateTimeField(auto_now_add=True, auto_now=True)
number = models.CharField(max_length=16, unique=False)
kind = models.SmallIntegerField(choices=KIND_CHOICES,default=KIND_UNKNOWN)
Run Code Online (Sandbox Code Playgroud)
User类是默认的Django类.
class Client(models.Model):
name = models.CharField(u"Nome", max_length=64)
last_update = models.DateTimeField(null=True, blank=True)
last_inbound_call = models.DateTimeField(null=True, blank=True)
last_outbound_call = models.DateTimeField(null=True, blank=True)
username = models.CharField(max_length=32)
password = models.CharField(max_length=16)
Run Code Online (Sandbox Code Playgroud) 当我有一个字符串变量x
,由于某种原因是""
:
val x = ""
我做:
x.forall(_.isDigit)
它返回true
我有点困惑为什么它是真的,不应该是假的吗?当我的if条件不起作用时,我发现了这个问题.然后我去看Scala源代码:
private def prefixLengthImpl(p: A => Boolean, expectTrue: Boolean): Int = {
var i = 0
while (i < length && p(apply(i)) == expectTrue) i += 1
i
}
override /*IterableLike*/
def forall(p: A => Boolean): Boolean = prefixLengthImpl(p, expectTrue = true) == length
Run Code Online (Sandbox Code Playgroud)
因此很明显,它的持"空洞的真理"的原则,因为计数器变量i
返回为0
我的字符串的长度也是0
,它最终被0==0
因此true
.我发现x.isEmpty
在做之前没必要做一个forall
.
python ×5
django ×4
django-admin ×2
activeadmin ×1
csv ×1
django-forms ×1
executable ×1
formtastic ×1
scala ×1
timeit ×1