我正在尝试使用 postgresql 数据库在 django 中为表模型设置约束。
我可以通过 postgresql 用这句话来做到这一点:
ALTER TABLE public.mytable ADD CONSTRAINT "myconstraint" UNIQUE(field1, field2) DEFERRABLE INITIALLY DEFERRED;
Run Code Online (Sandbox Code Playgroud)
但我想通过 django 模型来做。阅读 django 官方文档我没有发现任何相关的内容。
我需要这样的东西:
class Meta:
unique_together = (('field1', 'field2',), DEFERRABLE INITIALLY DEFERRED)
Run Code Online (Sandbox Code Playgroud)
有可能做这样的事情吗?
我想用一个函数而不是一个变量来过滤一个域,以便在视图中只显示一些寄存器。我已经这样做了:
class SaleOrderExt(models.Model):
_inherit = ['sale.order']
@api.multi
def custom_funct_date(self):
my_date = ... (some stuff)
return my_date
Run Code Online (Sandbox Code Playgroud)
然后,在视图中,我过滤了域:
<?xml version="1.0"?>
<openerp>
<data>
<record id='action_menu_custom_date' model='ir.actions.act_window'>
<field name="name">This is a test</field>
<field name="res_model">sale.order</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('date_order','>=',custom_funct_date)]</field>
</record>
</data>
</openerp>
Run Code Online (Sandbox Code Playgroud)
但这给了我一个错误:
ValueError: "name 'custom_funct_date' is not defined" while evaluating
u"[('date_order','>=',custom_funct_date)]"
Run Code Online (Sandbox Code Playgroud) 我正在尝试在销售订单模块的树视图中添加一个按钮,旁边是创建和导入按钮。该按钮将执行一个 python 方法。
我已经创建了我的自定义模块,扩展了销售订单模块,然后,我遵循了以下步骤:
第 1 步:在 my_module/static/src/xml/qweb.xml 中创建按钮:
<?xml version="1.0" encoding="UTF-8"?>
<templates id="template" xml:space="preserve">
<t t-extend="ListView.buttons">
<t t-jquery="button.o_list_button_add" t-operation="after">
<t t-if="widget.model=='sale.order'">
<button class="btn btn-sm btn-primary update_sales_button" type="button">Run my stuff</button>
</t>
</t>
</t>
</templates>
Run Code Online (Sandbox Code Playgroud)
第 2 步:将文件添加到我模块的 __openerp.py__ 中的 qweb 部分:
'depends': ['sale'],
'data': [],
'qweb': ['static/src/xml/qweb.xml'],
Run Code Online (Sandbox Code Playgroud)
现在,按钮出现。
第 3 步:创建 python 方法来为 my_module/my_python_file.py 中的按钮提供功能:
from openerp import api, fields, models, _
class SaleOrderExtended(models.Model):
_inherit = ['sale.order']
@api.multi
def update_sales_button(self):
... …Run Code Online (Sandbox Code Playgroud) 我想阅读存储在iCloud中的PDF文件的内容。
我使用FilePicker Phonegap iOS插件(https://github.com/jcesarmobile/FilePicker-Phonegap-iOS-Plugin)选择文件。该插件为我提供了文件复制的临时路径。
我想读一下Cordova文件插件(https://github.com/apache/cordova-plugin-file),但是我做错了什么,日志总是给我一个错误。
这是代码:
$scope.successCallback = function (path) {
var fileName = path.substr(path.lastIndexOf('/') + 1);
var fileDir = path.substr(0,path.lastIndexOf('/') + 1)
console.log("FilePath: " + path);
$cordovaFile.readAsDataURL(fileDir, fileName)
.then(function (data) {
var index = data.indexOf("base64,");
if(index > 0)
{
data = data.substr(index+7);
}
console.log("Data OK=" + data);
}, function (error) {
console.log("Error reading file: " + JSON.stringify(error));
});
}
window.FilePicker.pickFile($scope.successCallback, $scope.errorCallback);
Run Code Online (Sandbox Code Playgroud)
这就是输出:
$FilePath: /private/var/mobile/Containers/Data/Application/22E33EF4-832B-4911-92A6-312927C42A7C/tmp/DocumentPickerIncoming/file.pdf
$Error reading file: {"code":5,"message":"ENCODING_ERR"}
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
在上班时间中,有一个名为“ employee_id”的字段。
我想将此字段设置为仅对一个组可编辑(或对其他组设置为只读)。
例如,我只想在“表单”视图中为“经理”组设置字段“ employee_id”可编辑。
我扩展了出勤模块,并在扩展模块的XML中包含以下代码:
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_employee_readonly_custom" model="ir.ui.view">
<field name="name">hr.attendance.form</field>
<field name="model">hr.attendance</field>
<field name="inherit_id" ref="hr_attendance.view_attendance_form"/>
<field name="groups_id" eval="[(6,0,[ref('base.group_hr_manager')])]"/>
<field name="arch" type="xml">
<field name="employee_id" position="attributes">
<attribute name="readonly">True</attribute>
</field>
</field>
</record>
</data>
</openerp>
Run Code Online (Sandbox Code Playgroud)
使用此代码,除hr_manager组之外的所有字段都可编辑。那是我想要的相反。
为了达到此目的,我必须修改什么?
编辑:我已经在其他字段中修改了原始代码,以更好地理解。
我想通过一个包含数字的字段来命令QuerySet.我有这个代码:
MyTable.objects.all().order_by('my_char_field')
Run Code Online (Sandbox Code Playgroud)
有一些"my_char_field"的例子:
"ver3", "ver10", "x5.1 (1)", "ver4", "x5.1 (2)"
Run Code Online (Sandbox Code Playgroud)
上面代码的顺序结果是:
"ver10", "ver3", "ver4", "x5.1 (1)", "x5.1 (2)"
Run Code Online (Sandbox Code Playgroud)
但我想要的顺序是:
"ver3", "ver4", "ver10", "x5.1 (1)", "x5.1 (2)"
Run Code Online (Sandbox Code Playgroud)
我怎样才能获得自然顺序?
odoo-9 ×3
django ×2
openerp ×2
angularjs ×1
constraints ×1
cordova ×1
filepicker ×1
filter ×1
ios ×1
odoo ×1
postgresql ×1
python ×1
qweb ×1