1

我的一个模型中有一个非常简单IntegerField的模型。

模型.py

## Imports

from django.db import models

class UserModel(models.Model)
    name = models.CharField(max_length=50)


class NumberModel(models.Model)
    user = models.ForeignKey(UserModel)
    number = models.IntegerField(blank=True, null=True) # This is the IntegerField

在视图中,我传递了数字模型本身:

视图.py

def change_user_number(request):
    number = get_object_or_404(models.NumberModel, user=request.user)
    return render_to_response('change_number.html', {'number' : number }, context_instance=RequestContext(request))

现在,当我在我的一种自定义表单中使用上述整数字段的值时,它显示如下:

具有空白 IntegerField 值的文本字段

在模板中我有这样的东西:

模板

<form id="" action="" method="POST">
    <p><label for="user_number"></label></p>
    <p><input type="text" name="user_number" id="user_number" value="{{ number.number }}" />
    <input type="submit" value="submit" />
</form>

我只想在值存在时才显示该值。我很确定该值在数据库中保存为 null 但为什么返回"None".

我也尝试了以下但没有成功。

<input type="text" name="user_number" id="user_number" {% if number.number == "None" %} value="" {% else %} value="{{ number.number }}" {% endif %} />
4

2 回答 2

3

number.number为时None,它将在数据库中存储为空。正如丹尼尔在评论中所说,None与 string 不同"None",这就是您的比较不起作用的原因。

我建议您使用default_if_none模板过滤器。

{{ number.number|default_if_none:"" }}

这区分了何时值为0None

于 2012-12-20T11:04:28.690 回答
1

检查值是否存在:

{% if number.number %}
于 2012-12-20T10:35:35.750 回答