【问题标题】:Django field name length/conventionDjango 字段名称长度/约定
【发布时间】:2014-05-06 03:50:07
【问题描述】:

我不确定这是设计错误还是我做错了什么。我在 1.6.2 和 1.6.4 上遇到过这个

我的模型中有一些字段,例如:

my_custom_field = models.CharField()

在我的 forms.py 中,我有:

def clean_my_custom_field():

它没有被调用。字段名称中包含多个下划线似乎存在问题。我有几个名称中有 2 或 3 个下划线。我已将其中一个更改为使用单个下划线并且它有效。

我已经开始考虑缩短名称,但想知道是否有人遇到过这个问题并有解决/修复的方法。保留描述性名称会很好。

或者它实际上是一个错误?

更新:

表单设置相当基本。需要注意的一点是,长字段名称似乎在 Admin 中有效,但在前端表单中无效。

class MyBaseForm(forms.ModelForm):
    class Meta:
        model = MyModel
        fields = "__all__"

    def clean_active_listing_expiry_date(self):
        print "You are HERE!"
        "Do something else here"

更新:

class MyModel(models.Model):
    ... other fields listed before and after of course.
    active_listing_expiry_date = models.DateTimeField(
        verbose_name='Active Expiry Date',
        help_text="Date format: YYYY-MM-DD",
        blank=True,
        null=True
    )

更新:

views.py

def residential_add(request, ptype='Residential', template_name='properties/add_residential.html'):
    if request.method == 'POST':
        property_form = ResidentialPropertyForm(request.POST)

        if property_form.is_valid():
            print "*" * 60
            print "FORM IS VALID"

    else:
        property_form = ResidentialPropertyForm()

    return render_to_response(
        template_name,
        {
            'property': property_form,
        },
        context_instance=RequestContext(request)
    )

【问题讨论】:

  • 你能说明你是如何定义你的表单的吗?
  • 您的意思是单 my_custom_field 和双 my__custom__field 吗?第二个是错误的。
  • @JuanMiguelTaboada 格式如上帖所示。单词之间有一个下划线,但有多个单词。
  • @alecxe 更新了表单。
  • @bmeyer71 据我了解,您应该有一个名为clean_active_listing_expiry_date 的方法,而不仅仅是active_listing_expiry_date。

标签: django django-models


【解决方案1】:

不幸的是,我无法按照@schillingt 的建议在全新安装时重现该问题,因此我决定从头开始创建表单、查看和验证代码。不确定第一次错过了什么,但现在问题似乎已经解决了。

感谢那些提供帮助的人。

【讨论】:

    猜你喜欢
    • 2017-02-27
    • 2015-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-30
    • 1970-01-01
    相关资源
    最近更新 更多