小编dr *_*bob的帖子

Django模型字段默认基于同一模型中的另一个字段

我有一个模型,我想包含一个主题名称和他们的首字母.(这些数据有些匿名,并通过首字母进行跟踪.)

现在,我写道

class Subject(models.Model):

    name = models.CharField("Name", max_length=30)
    def subject_initials(self):
        return ''.join(map(lambda x: '' if len(x)==0 else x[0],
                           self.name.split(' ')))
    # Next line is what I want to do (or something equivalent), but doesn't work with
    # NameError: name 'self' is not defined
    subject_init = models.CharField("Subject Initials", max_length=5, default=self.subject_initials)
Run Code Online (Sandbox Code Playgroud)

如最后一行所示,我希望能够将首字母实际存储在数据库中作为字段(独立于名称),但是使用基于名称字段的默认值进行初始化.但是,我有问题,因为django模型似乎没有"自我".

如果我将行更改为subject_init = models.CharField("Subject initials", max_length=2, default=subject_initials),我可以执行syncdb,但无法创建新主题.

这在django中是否可行,具有可调用函数根据另一个字段的值给出某个字段的默认值?

(好奇的是,我想分开我的商店首字母的原因是极少数情况下奇怪的姓氏可能与我跟踪的名字不同.例如,有人认为主题1命名为"John O'Mallory"的首字母是"JM"而不是"JO",并希望修改为管理员.)

python django django-models django-1.2

79
推荐指数
3
解决办法
3万
查看次数

Django Admin的内联式解决方案,其中Admin包含ForeignKey到其他模型

我有几个Customer人预订了Appointment.每个Appointment客户只有一个客户,但可以预订客户在不同时间进行多次约会.

class Customer(model.Model):
    def __unicode__(self):
        return u'%s' % (self.name,)
    name = models.CharField(max_length=30)
    # and about ten other fields I'd like to see from the admin view.

class Appointment(models.Model):
    datetime = models.DateTimeField()
    customer = models.ForeignKey("Customer")
    class Meta:
        ordering = ('datetime',)
Run Code Online (Sandbox Code Playgroud)

现在,当管理员通过查看管理员中的约会(按时间排序)浏览计划时,有时他们希望查看有关具有特定约会的客户的信息.现在,他们必须记住客户的名字,从约会导航到客户管理页面,找到记住的客户,然后才能浏览他们的信息.

理想情况下,管理员内联将是伟大的.但是,如果有一个,我似乎只能CustomerInlineAppointment管理页面Customer上创建一个ForeignKey("Appointment").(Django特别给我一个错误,说Customer没有ForeignKey Appointment).有没有人知道类似的功能,但什么时候AppointmentForeignKey('Customer')

注意:我简化了模型; 实际的客户字段目前除了名称(一些自由文本)之外还有大约10个字段,因此将所有信息放入其中是不切实际的__unicode__.

python django foreign-keys django-admin

16
推荐指数
2
解决办法
9367
查看次数

Django在表格上保存不完整的进展

我有一个django webapp,有多个用户登录并填写表单.

一些用户可能开始填写表单并且缺少验证表单所需的一些所需数据(例如,授权#)(并且在我们开始处理之前).我希望他们能够填写表格,并可以选择保存部分信息(所以另一天他们可以重新登录并完成它)或提交正在进行验证的完整信息.

目前我正在为我使用的所有表单使用ModelForm,并且Model具有确保有效数据的约束(例如,grant#必须是唯一的).但是,我希望他们能够保存这些中间数据,而无需进行任何验证.

我想到的解决方案看起来相当不优雅和un-django-ey:创建一个"保存部分表单"按钮,保存POST字典将其转换为工具文件并创建一个"SavedPartialForm"模型,将用户连接到保存的部分表单在架子上.这看起来合情合理吗?有没有更好的方法将POST dict直接保存到db?或者是一个附加模块,它可以对表单进行部分保存(这似乎是与webforms相当常见的活动)?

我最关心的是我的方法是我希望最终能够在一些ajax/jquery方法中自动执行这种形式 - 自动保存(比如每10分钟)而不实际按下按钮并发送POST请求(例如,所以用户不是'触发自动保存时重定向到页面外).我对jquery并不熟悉,我想知道是否可以这样做.

python django django-forms

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

防火墙后面的webapp上的OAuth - 是否可能?

我正在尝试构建一个webapp来将事件添加到员工的Google日历中,并希望使用OAuth进行身份验证.

但是,我的webapp被强制放在防火墙后面的内部网上; 服务器具有出站Internet访问权限,但如果您不在Intranet上或VPN连接到Intranet,则会阻止入站访问.

我正在阅读OAuth,但无法弄清楚我的防火墙是否会阻止部分身份验证握手过程.(如果不可能的话,我想知道它是否可能在花时间实施之前;并且如果遇到错误我就可以调试它们.

authentication firewall intranet oauth google-calendar-api

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

Jqplot中两个系列数据的变色条

我想知道如何在Jqplot中为两个系列制作变色条.如果我只有一个系列数据,它的工作方式与下图完全相同

替代文字

基于其价值的红色和绿色.

但是如果我有两个系列数据,我就无法为每个系列数据配置两个系列颜色.到目前为止,我只能制作这张图

替代文字

我希望这两个系列图可以根据其值以及一个系列图来改变颜色.

这是我的代码

chart = $.jqplot('map-chart', [dataChart, dataChart2], {
        title: 'TIME',
        legend: {
            renderer: $.jqplot.EnhancedLegendRenderer,
                        show: true,
                        location: 'ne'
        },
        series: [{label: 'Current data'}, {label: 'Worst data'}],
        //seriesColors: seriesColors1,
        seriesDefaults:{
            renderer:$.jqplot.BarRenderer,
            pointLabels: {show: true}
            //rendererOptions:{
             //varyBarColor: true
            //}
        },
        axes: {
            xaxis: {
                label: 'station',
                renderer: $.jqplot.CategoryAxisRenderer,
                labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
                tickRenderer: $.jqplot.CanvasAxisTickRenderer,
                ticks: tickers,
                tickOptions: {
                    angle: -30
                }
            },
            yaxis: {
              min: 0,
              label: 'Time',
              labelRenderer: $.jqplot.CanvasAxisLabelRenderer,
              tickOptions: {
                    fontSize: '8pt'
              }
            }
        },
        highlighter: {show: false}
    }); …
Run Code Online (Sandbox Code Playgroud)

javascript jquery jqplot

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

django-south with django-audit-log

我正在尝试向现有应用程序执行django-south迁移以向其添加django-audit-log(以跟踪用户启动的模块更改),但遇到了重大错误.具体来说,action_user_id字段是LastUserField(存储指定正在跟踪的更改的用户).

如果我从空白模型开始,我可以通过以下方式添加audit_log:

from audit_log.models.managers import AuditLog
...
class SomeModel(models.Model)
    ...
    audit_log = AuditLog()
Run Code Online (Sandbox Code Playgroud)

应用这个简单的更改并在django-south中进行模式迁移会给我一个错误:

 ! Cannot freeze field 'myapp.mymodelauditlogentry.action_user'
 ! (this field has class audit_log.models.fields.LastUserField)

 ! South cannot introspect some fields; this is probably because they are custom
 ! fields. If they worked in 0.6 or below, this is because we have removed the
 ! models parser (it often broke things).
 ! To fix this, read http://south.aeracode.org/wiki/MyFieldsDontWork
Run Code Online (Sandbox Code Playgroud)

我阅读了MyFieldsDontWork维基(以及自定义字段/内省部分),但它并不是100%清楚我需要做些什么来让字段工作.

我尝试添加:

from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^audit_log\.models\.fields\.LastUserField"])
Run Code Online (Sandbox Code Playgroud)

到我的models.py,它允许./manage.py架构迁移创建一个迁移脚本,之前的错误消失了.但是,当我尝试迁移(应用迁移)时,我收到以下错误: …

python django django-south

5
推荐指数
2
解决办法
1819
查看次数

黑体谱的普朗克斯公式

我试图写一个简单的python代码,用于给定温度T = 200K的强度与波长的关系图.到目前为止我有这个......

import scipy as sp
import math
import matplotlib.pyplot as plt
import numpy as np
pi = np.pi
h = 6.626e-34
c = 3.0e+8
k = 1.38e-23

def planck(wav, T):
    a = 2.0*h*pi*c**2
    b = h*c/(wav*k*T)
    intensity = a/ ( (wav**5)*(math.e**b - 1.0) )
    return intensity
Run Code Online (Sandbox Code Playgroud)

我不知道如何定义波长(wav),从而产生普朗克公式的图.任何帮助,将不胜感激.

python numpy matplotlib scipy

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

初学者python列表补充,查找索引

我有以下代码,我想要所有1的索引位置:

mylist = ['0', '0', '1', '1', '0']

for item in mylist:
    if item is '1':
        print mylist.index(item)
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么这个程序的输出是2,2而不是2,3?

谢谢

python indexing list

-1
推荐指数
1
解决办法
156
查看次数