0

画像フィールドに割り当てる qr コードを生成しようとしています。ModelAdmin の save_model 関数を使用して、別のモデルで問題なくこれを実行しました。今、私はそれをインラインで行う必要があります。どうやら、save_model はここでは機能せず、代わりに save_formset を使用する方法であると言われましたが、機能させることができません。コードを私が見た save_formset の他のインスタンスと比較しましたが、構文エラーは表示されませんが、django はエラー レポートを表示しないため、他に何もすることはありません。

class InstrumentAdmin(admin.ModelAdmin):
    inlines = [
        AssetInline,
    ]
    def save_formset(self, request, form, formset, change):
        instances = formset.save(commit=False)
        for f in instances:
            # save the object first so we get an id number etc.
            f.save()
            # determine the URL
            url='{}{}'.format(HOMEURL,f.get_absolute_url())
            # build a qr code
            qr = qrcode.QRCode(box_size=3)
            qr.add_data( 'FloWave TT {} {}'.format(f,url))
            qr.make(fit=True)
            img=qr.make_image()
            # save to memory
            img_io= StringIO.StringIO()
            img.save(img_io,'PNG')
            img_file=InMemoryUploadedFile(img_io, None, 'assetqr{}.png'.format(f.id), 'image/png', img_io.len, None)
            # update the object record with the qrcode
            f.qrcode=img_file
            f.save()
        formset.save_m2m()
4

1 に答える 1