我有两个自定义Django字段,a JSONField和a CompressedField,两者都运行良好.我想也有CompressedJSONField,我希望我能做到这一点:
class CompressedJSONField(JSONField, CompressedField):
pass
Run Code Online (Sandbox Code Playgroud)
但在导入时,我得到:
RuntimeError: maximum recursion depth exceeded while calling a Python object
Run Code Online (Sandbox Code Playgroud)
我可以在Django中找到有关使用具有多重继承的模型的信息,但没有关于对字段执行相同操作的信息.这有可能吗?或者我应该在这个阶段放弃?
编辑:
为了清楚起见,我不认为这与我的代码的细节有任何关系,因为下面的代码有完全相同的问题:
class CustomField(models.TextField, models.CharField):
pass
Run Code Online (Sandbox Code Playgroud)
编辑2:
我目前正在使用Python 2.6.6和Django 1.3.这是我的剥离右下测试示例的完整代码:
customfields.pyfrom django.db import models
class CompressedField(models.TextField):
""" Standard TextField with automatic compression/decompression. """
__metaclass__ = models.SubfieldBase
description = 'Field which compresses stored data.'
def to_python(self, value):
return value
def get_db_prep_value(self, value, **kwargs):
return super(CompressedField, self)\
.get_db_prep_value(value, prepared=True)
class JSONField(models.TextField):
""" JSONField with automatic serialization/deserialization. …Run Code Online (Sandbox Code Playgroud) 可能重复:
Django动态模型字段
早上好家伙!场景如下.对于Django上的一些模型,我想允许最终用户定义自己的字段.如果我可以保留所有Django这些令人敬畏的功能,如ORM,那将是很棒的,所以我仍然可以执行类似field__gte的调用来搜索模型,仍然根据字段类型进行字段验证等等.我已经考虑了两种方法这个,我不仅仅对新的建议持开放态度.任何反馈都将非常感激.
第一种方法是实体 - 属性 - 值(http://en.wikipedia.org/wiki/Entity%E2%80%93attribute%E2%80%93value_model),其中django已经有了一个应用程序.请参阅http://code.google.com/p/django-custom-field/ 我认为这是一个不错的解决方案,但我失去了"mymodel.objects.filter(custom_field_x = something)"的能力.也许有办法重新获得ORM,任何想法?但是我听说过很多关于这个方法的坏故事,我有点害怕使用它.
第二种方法是为每个用户建立一个数据库表(可能不超过1000个).我读过django在inspectdb中有一些东西,它实际上会检查哪些字段并为你生成模型.这可能是有用的,但我想也许我应该存储这个特定用户创建的字段,并以某种方式告诉django,嘿,我们在这个模型中也有这个字段.这可能吗?我知道为每个用户设置不同的表通常很糟糕,但考虑到这种情况,你们如何评价这种方法,为每个用户设置一个表是否可以?
需要自定义字段的模型例如是Person.他们可能想要一个自定义字段来存储地址,血型或任何其他东西.
提前谢谢了!周日愉快!
非常相似:如何在Django中创建用户定义的字段 - 但只讨论EAV,我想避免.我愿意接受新的想法!
基本上我有一个名为"Parts"的自定义帖子类型设置,目前有超过5,000个帖子.每个部件都有许多自定义字段,包括"部件号".目前,每个部分的URL是:
http://site.com/parts/name-of-part/
我宁愿拥有的是:
http://site.com/parts/XXXX-608-AB/(这是一个部件号,存储为自定义字段"partno".)
我相信我需要做两件事:
1)根据自定义字段"partno"制作一个脚本,以批量编辑每个现有部件的所有slug.
2)连接到Wordpress函数以触发它始终根据自定义字段"partno"为新零件创建slug.
有没有人知道如何完成这些方面中的一个或两个?
更新:以下是我最终用于更改现有帖子的代码
// Set max posts per query
$max = 500;
$total = 5000;
for($i=0;$i<=$total;$i+=$max) {
$parts = get_posts(array('post_type' => 'parts', 'numberposts' => $max, 'offset' => $i));
// loop through every part
foreach ( $parts as $part ) {
// get part number
$partno = get_post_meta( $part->ID, 'partno', true );
$updated_post = array();
$updated_post['ID'] = $part->ID;
$updated_post['post_name'] = $partno;
wp_update_post( $updated_post ); // update existing posts
echo $part->ID;
}
}
Run Code Online (Sandbox Code Playgroud)
更新:以下是我在functions.php中用来更改正在发布的帖子的代码 (部分归功于 …
早上好.
我创建了一个名为"Products"的自定义帖子类型.我想创建一个自定义字段(元数据是正确的术语吗?),我的客户可以勾选一个框来确定此CPT中的给定帖子是否是特色帖子.
以下是我的functions.php中用于创建"产品"CPT的代码:
function products_custom_init() {
$labels = array(
'name' => _x('Products', 'post type general name'),
'singular_name' => _x('Product', 'post type singular name'),
'add_new' => _x('Add New', 'products'),
'add_new_item' => __('Add New Product'),
'edit_item' => __('Edit Product'),
'new_item' => __('New Product'),
'view_item' => __('View Product'),
'search_items' => __('Search Products'),
'not_found' => __('Nothing found'),
'not_found_in_trash' => __('Nothing found in Trash'),
'parent_item_colon' => ''
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'show_in_menu' => …Run Code Online (Sandbox Code Playgroud) 提前感谢您的时间和帮助!
我正在尝试在Play 2.0.4中构建一个自定义表单字段,该字段使用此处的twitter bootstrap datepicker .
基本上,我正在尝试创建一个自定义字段构造函数,输出:
<div class="input-append date error" id="expires_field" data-date="" data-date-format="mm/dd/yyyy">
<label for="expires_field">Expiration Date</label>
<div class="input">
<input class="span2" size="16" type="text" name="expires" id="expires" value="mm/dd/yyyy">
<span class="add-on"><i class="icon-th"></i></span>
<span class="help-inline"></span>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
但是,尽管在互联网上大量浏览 - 我一直无法在Play 2.0中创建自定义表单字段,我仍然可以验证并显示错误.
我认为,大多数情况下,我对应用程序结构中文件的位置感到有些困惑.
任何帮助将不胜感激!
Pixelworlds
我将Mailchimp订阅插件用于wordpress(1.2.13版)。没关系,我只需要添加一个复选框即可接受隐私条款。我通过Mailchimp表单管理创建了该字段,除了需要根据需要定义它外,它可以在表单中显示和工作。在mailchimp中没有用于此的选项,我试图在html中添加一个简单的“ required”属性,但是没有起作用(按预期)。
有什么建议吗?
我还发现Mailchimp定义了在$var['req']与该字段名称相关联的数组/位置中是否需要该字段。但是我找不到在哪里可以访问此数组或如何向其中添加自定义字段。
这是我的情况:我客户的wordpress网站有一个“事件”自定义帖子类型,其中有一个名为“ date”的自定义字段(高级自定义字段的datepicker)。该网站的所有部分都工作正常,但是现在他们要求我添加一个类似于小部件的日历来获取所有事件。
基本上我需要像get_calendar();之类的东西。但对于使用“日期”自定义字段而不是创建日期的“事件”帖子类型。昨天我花了一整天的时间寻找插件,hack,代码片段……但似乎什么也做不了。我知道即使在stackoverflow上也有类似的问题,但是仍然没有解决方案...
你有什么想法?
当我尝试在 JIRA 中的自定义字段上设置值时遇到问题,它返回此错误:
File "c:\python27\lib\site-packages\jira\resilientsession.py", line 45, in raise_on_error
r.status_code, error, r.url, request=request, response=r, **kwargs)
JIRAError: JiraError HTTP 400
text: Operation value must be a string
url: http://iasp091x.ia.ro.conti.de:8080/rest/api/2/issue/31424
response headers = {'X-AUSERNAME': 'continental', 'X-ASEN': 'SEN-5132028', 'X-Content-Type-Options': 'nosniff', 'Content-Encoding': 'gzip', 'Transfer-Encoding': 'chunked', 'X-Seraph-LoginReason': 'OK', 'Vary': 'User-Agent', 'X-AREQUESTID': '850x418015x3', 'X-ASESSIONID': 'gv7hra', 'Connection': 'close', 'Cache-Control': 'no-cache, no-store, no-transform', 'Date': 'Mon, 01 Feb 2016 12:10:49 GMT', 'Server': 'Apache-Coyote/1.1', 'Content-Type': 'application/json;charset=UTF-8'}
response text = {"errorMessages":[],"errors":{"customfield_11301":"Operation value must be a string"}}
Run Code Online (Sandbox Code Playgroud)
我使用的代码是这样的:
new_issue = jira.create_issue(project='PT', summary=issue_summary, …Run Code Online (Sandbox Code Playgroud) 我的WooCommerce单品上有自定义字段.它发送到购物车罚款,它在结账时显示罚款,它在仪表板中按顺序显示.
我现在要做的是将值设置为订单页面中的自定义字段,以便我能够在需要时修改文本.出于某种原因,当我提交表单时,此步骤无效.
我在我的functions.php文件中使用的代码:
// Add the field to the product
add_action('woocommerce_before_add_to_cart_button', 'my_custom_checkout_field');
function my_custom_checkout_field() {
echo '<div id="my_custom_checkout_field"><h3>'.__('My Field').'</h3>';
echo '<label>fill in this field</label> <input type="text" name="my_field_name">';
echo '</div>';
}
// Store custom field
function save_my_custom_checkout_field( $cart_item_data, $product_id ) {
if( isset( $_REQUEST['my_field_name'] ) ) {
$cart_item_data[ 'my_field_name' ] = $_REQUEST['my_field_name'];
/* below statement make sure every add to cart action as unique line item */
$cart_item_data['unique_key'] = md5( microtime().rand() );
}
return $cart_item_data;
}
add_action( 'woocommerce_add_cart_item_data', 'save_my_custom_checkout_field', …Run Code Online (Sandbox Code Playgroud) 我已经在产品页面的常规设置选项卡上的WooCommerce Admin中创建了自定义字段,以便为制造插入一些天.我想在每个产品名称上方的购物车和结帐页面上显示此自定义字段值.
这是我的代码:
// Insert a Custom Admin Field
function woo_add_custom_general_fields() {
echo '<div class="options_group">';
woocommerce_wp_text_input( array(
'id' => 'days_manufacture',
'label' => __( 'Days for Manufacture', 'woocommerce' ),
'placeholder' => '',
'description' => __( 'Insert here', 'woocommerce' ),
'type' => 'number',
'custom_attributes' =>
array(
'step' => 'any',
'min' => '1'
)
) );
echo '</div>';
}
add_action( 'woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields' );
// Save field
function woo_add_custom_general_fields_save( $post_id ){
$woocommerce_number_field = $_POST['days_manufacture'];
if( !empty( $woocommerce_number_field ) )
update_post_meta( $post_id, 'days_manufacture', esc_attr( $woocommerce_number_field …Run Code Online (Sandbox Code Playgroud)