我有两个自定义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中用来更改正在发布的帖子的代码 (部分归功于 …
提前感谢您的时间和帮助!
我正在尝试在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']与该字段名称相关联的数组/位置中是否需要该字段。但是我找不到在哪里可以访问此数组或如何向其中添加自定义字段。
我在我的一个django项目中遇到了一个非常奇怪的问题.在我的项目中,我有一个自定义字段类,处理外键,一对一和许多2个模型字段.该课程如下所示.
from django import forms
class CustomRelatedField(forms.Field):
def __init__(self, model, limit=None, multiple=False, create_objects=True, *args, *kwargs):
self.model = model
self.limit = limit
self.multiple = multiple
self.create_objects = create_objects
super(CustomRelatedField, self).__init__(*args, **kwargs)
def clean(self, value):
""" Calls self.get_objects to get the actual model object instance(s)
from the given unicode value.
"""
# Do some value processing here
return self.get_objects(value)
def get_objects(self, values):
""" Returns the model object instances for the given unicode values.
"""
results = []
for value in values:
try: …Run Code Online (Sandbox Code Playgroud) 这是我的情况:我客户的wordpress网站有一个“事件”自定义帖子类型,其中有一个名为“ date”的自定义字段(高级自定义字段的datepicker)。该网站的所有部分都工作正常,但是现在他们要求我添加一个类似于小部件的日历来获取所有事件。
基本上我需要像get_calendar();之类的东西。但对于使用“日期”自定义字段而不是创建日期的“事件”帖子类型。昨天我花了一整天的时间寻找插件,hack,代码片段……但似乎什么也做不了。我知道即使在stackoverflow上也有类似的问题,但是仍然没有解决方案...
你有什么想法?
我已经在产品页面的常规设置选项卡上的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) 我一直在尝试在 woocommerce 后端添加一个自定义字段,用户可以在其中多选某个级别的复选框。
是否可以创建多个复选框?到目前为止,我有这个:
woocommerce_wp_checkbox(
array(
'id' => '_custom_product_niveau_field',
'type' => 'checkbox',
'label' => __('Niveau', 'woocommerce'),
'options' => array(
'MBO' => __( 'MBO', 'woocommerce' ),
'HBO' => __( 'HBO', 'woocommerce' ),
'WO' => __( 'WO', 'woocommerce' )
)
)
Run Code Online (Sandbox Code Playgroud)
但这不起作用...... woocommerce_wp_checkbox 是否支持这个?
我需要在 Shopify 产品页面上添加自定义文本框字段。
我的要求是在产品页面上添加文本框字段,当客户在购物车中添加产品时,该文本框字段值也会显示在购物车页面和结帐页面上。
我还需要在管理自定义订单页面上反映该文本框字段值。
这可能吗?