Django - 当我回到表单

时间:2015-08-28 23:00:41

标签: python django django-forms django-views

我是Django的新手。当我返回到表单时,我希望它充满了之前由用户填充的信息。我注意到当我进入Django管理员并向模型添加内容时,我可以看到之前添加的先前信息。有没有办法在Django Admin之外执行此操作?有没有办法为图像做这个?

谢谢

型号:

def content_file_name(instance, filename):
    return '/'.join(['content', instance.user.username, filename])


class Content(models.Model):
    user = models.ForeignKey(User)
    logo = models.ImageField(upload_to=content_file_name, null=True, blank=True)
    image1 = models.ImageField(upload_to=content_file_name, null=True, blank=True)
    terms = models.CharField(max_length="256", blank=True)

    def __unicode__(self):
        return self.title

的观点:

@login_required
def register(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            instance = Content(user=request.user,
                               logo=request.FILES.get('logo'),
                               image1=request.FILES.get('image1'),
                               terms=request.POST.get('terms'))
            instance.save()
            return HttpResponseRedirect('/portal/register')
    else:
        form = UploadFileForm()

    return render(request, 'portal/register.html', {'form': form})

形式:

class UploadFileForm(ModelForm):

    logo = forms.ImageField(required=False)
    image1 = forms.ImageField(required=False)
    terms = forms.CharField(required=False)

    class Meta:
        model = Content
        fields = ['user', 'logo', 'image1', 'terms']

编辑: 我被指出了一个答案,给出了如何解决问题的一些见解。答案指向

my_record = MyModel.objects.get(id=XXX)
form = MyModelForm(instance=my_record)

form = MyModelForm(request.POST, instance=my_record)

有人可以指出我在使用id来获取模型中已有的信息的方向吗?

编辑2:

此代码现在返回模型中的信息,但是当我输入新数据并保存时,我再次加载页面并且新内容未保存并显示最初的内容。有关如何显示新数据的想法吗?

@login_required
def register(request):

    info = Content.objects.get(id=request.user.id)

    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES, instance=info)

        if form.is_valid():
            instance = Content(user=request.user,
                               logo=request.FILES.get('logo'),
                               image1=request.FILES.get('image1'),
                               terms=request.POST.get('terms'))
            instance.save()
            return HttpResponseRedirect('/portal/register')
    else:
        form = UploadFileForm(instance=info)

        return render(request, 'portal/register.html', {'form': form}) 

0 个答案:

没有答案