在Django CRUD应用程序的编辑形式中,现有数据未在字段中正确显示

时间:2017-03-17 13:33:06

标签: python django

我是python的新手,并尝试构建一个Django CRUD webapp。添加和删​​除表单工作正常但在字段中以编辑形式而不是字段的实际值,它显示def proposal_update(request, pk,template_name='proposal/proposal_form.html'): server = get_object_or_404(Proposal, pk=pk) form = ProposalForm(request.POST or None, instance=Proposal) if form.is_valid(): form.save() return redirect('list') return render(request, template_name, {'form':form}) 而不是像John Doe那样显示值。

我正在使用python 3.6和Django 1.10.6

我正在使用基于功能的方法。所以在我的views.py中,我有以下内容:

    def get_absolute_url(self):
    return reverse('proposal_edit', kwargs={'pk': self.pk})

在我的models.py中,我有以下内容:

urlpatterns=[
  url(r'^delete/(?P<pk>\d+)$', views.ProposalDelete.as_view(),name='proposal_delete'),
  url(r'^new$', views.proposal_create, name='proposal_new'),
  url(r'^edit/(?P<pk>\d+)$', views.proposal_update, name='proposal_edit'),
]

在我的urls.py中我有:

    int color1 = 0xDDfbc2ba;
    int color2 = 0xDD7a6c3e;

    int mixColor = mixTwoColors(color1,color2,0.5f);  


public static int mixTwoColors( int color1, int color2, float amount )
{
    final byte ALPHA_CHANNEL = 24;
    final byte RED_CHANNEL   = 16;
    final byte GREEN_CHANNEL =  8;
    final byte BLUE_CHANNEL  =  0;

    final float inverseAmount = 1.0f - amount;

    int a = ((int)(((float)(color1 >> ALPHA_CHANNEL & 0xff )*amount) +
            ((float)(color2 >> ALPHA_CHANNEL & 0xff )*inverseAmount))) & 0xff;
    int r = ((int)(((float)(color1 >> RED_CHANNEL & 0xff )*amount) +
            ((float)(color2 >> RED_CHANNEL & 0xff )*inverseAmount))) & 0xff;
    int g = ((int)(((float)(color1 >> GREEN_CHANNEL & 0xff )*amount) +
            ((float)(color2 >> GREEN_CHANNEL & 0xff )*inverseAmount))) & 0xff;
    int b = ((int)(((float)(color1 & 0xff )*amount) +
            ((float)(color2 & 0xff )*inverseAmount))) & 0xff;

    return a << ALPHA_CHANNEL | r << RED_CHANNEL | g << GREEN_CHANNEL | b << BLUE_CHANNEL;
}

2 个答案:

答案 0 :(得分:1)

我希望你的意思是使用实例server而不是类Proposal作为实例值。

form = ProposalForm(request.POST or None, instance=server)

答案 1 :(得分:0)

使用initial关键字填充表单。也许这条线上的东西可能会有所帮助。

def proposal_update(request, pk,template_name='proposal/proposal_form.html'):
server = get_object_or_404(Proposal, pk=pk)

data = {'template_field_name': model_field_name}
form = MyForm(initial=data)

if form.is_valid():
    form.save()
    return redirect('list')
return render(request, template_name, {'form':form})