0

私は次のモデルを持っています

class Category(models.Model):
    name = models.CharField(max_length=30)
    is_active=models.BooleanField()
    photo=models.ImageField(upload_to='category')
    def __unicode__(self):
       name = str(self.name)
       return name
    class Meta:
        permissions = (
            ('category','Category'),
            ('view_category', 'View category'),
        )

私のフォームクラスは次のとおりです

class categoryForm(forms.Form):
    name = forms.CharField(widget=forms.TextInput(attrs={'class':'box'}),max_length=32,label='Category',required=True)
    is_active = forms.BooleanField(required=False)
    id = forms.CharField(widget=forms.HiddenInput,required=False)
    photo = forms.FileField(
            required=False,
            label='Select an Image',
            help_text='max. 4 megabytes'
            )

view.py には次のものがあります

formdata = categoryForm(request.POST,request.FILES)
    if formdata.is_valid():
            cd = formdata.cleaned_data
            p1=Category()
            p1.id=cd['id']
            p1.name=cd['name']
            p1.is_active=cd['is_active']
            p1.photo=cd['photo']
            p1.save()

正常に動作していますが、次のように変更すると画像がアップロードされません

Category.objects.filter(id='%s'%(cd['id'])).update(name='%s'%(cd['name']),
                                    is_active='%s'%(cd['is_active']),
                                   photo=cd['photo']
                                   )

2番目の方法の方が速いと思いますが、ImageFieldで機能しないのはなぜですか

4

3 に答える 3

0

に文字列を渡してはいけませんis_active。ブール値を渡すだけで機能するはずです。'%s' % stringまた、 ;のようなコードを書くべきではありません。あなたはただ使うことができますstring

于 2012-05-03T06:50:41.030 に答える
0

上に貼り付けたコードの id は文字列です。int に変換してみてください。これにより、フィルタークエリが機能し、更新も機能すると思います。

于 2012-05-03T06:41:18.303 に答える
0

使用する必要がありますget_or_create

于 2012-05-03T11:46:23.113 に答える