模型中的字段在django应用程序中不会更改

时间:2015-04-02 08:31:27

标签: python django forms

我正在研究django 1.4.5。我添加到模型中,选择T恤的尺寸。

模型中的字段

tshirt_size = models.CharField(choices=TSHIRT_SIZE_CHOICES, default="s", blank=True, null=True, max_length=24)

我的表单

class SubscriberForm(forms.ModelForm):
    class Meta():
        model = Subscriber
        exclude = ['event', 'is_active']
        widgets = {
            'name': TextInput(),
            'last_name': TextInput(),
            'email': TextInput(),
            'tshirt_size': Select(choices=TSHIRT_SIZE_CHOICES)
        }

在视图中,我以这种方式获取数据:

tshirt_size = request.POST.get('tshirt_size')

部分HTML代码

<label for="id_tshirt_size">T-Shirt Size (Unisex):</label>
{{ form.tshirt_size }}

当我在表单上执行save时,我进入管理面板,没有tshirt_size的值。

1 个答案:

答案 0 :(得分:1)

以下是使用ModelForm创建或更新模型实例的规范方法:

def myview(request, pk=None):
    if pk:
        instance = get_object_or_404(Subscriber, pk=pk)
    else:
        instance = None
    if request.method == "POST":
        form = SubscriberForm(request.POST, instance=instance)
        if form.is_valid():
            instance = form.save()
            # do whatever with instance or just ignore it
            return redirect(some return url)
    else:
        form = SubscriberForm(instance=instance)
    context = {"form":form}
    return render(request, "path/to/your/template.html", context)

如果您的观点看起来不像它,那么您很可能做错了。您在视图中提到tshirt_size = request.POST.get('tshirt_size')肯定会让您觉得FWIW做错了。