0

CRUD 管理ビューを使用してテキストを編集しています。モデルのメソッドをオーバーライドして、save()事前に検証を実行します。つまり、入力文字列が整形式の xml でない場合、保存されません。ユーザーに通知したい。ただし、リクエストオブジェクトとメッセージフレームワークが必要なソリューションしか見つけることができませんが、私に関する限り、requestから アクセスすることはできませんsave()

def save(self, *args, **kwargs):
    try:
        from xml.dom.minidom import parseString
        doc = parseString(self.content)
        super(Screen, self).save(*args, **kwargs)
    except Exception, e:
        from django.contrib import messages
        # messages.error(request, "This is a bad bad message")
        print("this is a bad bad string")
        return

エラーメッセージを送信するにはどうすればよいですか? 「保存」を押すと、ユーザーはそのモデルのインスタンスのリストに再度リダイレクトされます。フォームにリダイレクトする方法はありますか?これらの問題は関連していますか?

4

2 に答える 2

1

モデル内で clean メソッドを使用できると思います。そのようにして、他の管理フィールドと同様に、管理でデータを検証します

あなたの中にModel

def clean(self):
   try:
        from xml.dom.minidom import parseString
        doc = parseString(self.content)

    except Exception, e:
        from django import forms
        raise forms.ValidationError(u"It's not a XML")

    super(YourModel,self).clean()

def full_clean(self, exclude=None):
    return self.clean()

参照: https://docs.djangoproject.com/en/dev/ref/models/instances/#django.db.models.Model.clean_fields

于 2013-04-17T15:39:10.997 に答える