[解決済み] 保存時に、フィールドが変更されたかどうかを確認するにはどうすればよいですか?
2022-03-16 03:51:55
質問
私のモデルには、:
class Alias(MyBaseModel):
remote_image = models.URLField(max_length=500, null=True, help_text="A URL that is downloaded and cached for the image. Only
used when the alias is made")
image = models.ImageField(upload_to='alias', default='alias-default.png', help_text="An image representing the alias")
def save(self, *args, **kw):
if (not self.image or self.image.name == 'alias-default.png') and self.remote_image :
try :
data = utils.fetch(self.remote_image)
image = StringIO.StringIO(data)
image = Image.open(image)
buf = StringIO.StringIO()
image.save(buf, format='PNG')
self.image.save(hashlib.md5(self.string_id).hexdigest() + ".png", ContentFile(buf.getvalue()))
except IOError :
pass
には素晴らしい働きをします。
remote_image
が変更されます。
を変更した場合、新しい画像を取得するにはどうすればよいですか?
remote_image
をエイリアス上で使用することはできますか?また、第二に、リモート画像をキャッシュする良い方法はありますか?
どのように解決するのですか?
基本的には
__init__
メソッドに
models.Model
で、元の値のコピーを保持するようにします。 これにより、DBの再検索を行う必要がなくなります(これは常に良いことです)。
class Person(models.Model):
name = models.CharField()
__original_name = None
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.__original_name = self.name
def save(self, force_insert=False, force_update=False, *args, **kwargs):
if self.name != self.__original_name:
# name changed - do something here
super().save(force_insert, force_update, *args, **kwargs)
self.__original_name = self.name
関連
-
Djangoの基本(16)。テンプレートタグの紹介とそのカスタマイズ方法
-
Django QuerySet マルチテーブル結合/条件付きピッキング/マージ
-
[解決済み] Django のビューで 2 つ以上のクエリセットを結合するにはどうすればよいですか?
-
[解決済み] MySQLで外部キー制約を一時的に無効にするにはどうすればよいですか?
-
[解決済み] Djangoのバージョンを確認する方法
-
[解決済み] pipと要件ファイルを使って、特定のパッケージをアップグレードするにはどうすればよいですか?
-
[解決済み] Django で完全な/絶対的な URL (ドメイン付き) を取得するにはどうすればよいですか?
-
[解決済み] djangoモデルのカスタムsave()メソッドでは、新しいオブジェクトをどのように識別する必要がありますか?
-
[解決済み】Djangoでモデルインスタンスをシリアライズする方法は?
-
[解決済み] Django モデルで外部キーフィールドをオプションにすることはできますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Django の Model オブジェクトを、全てのフィールドをそのままに dict に変換します。
-
6.5、Django - モデルでJSONFieldを使用してJSONフィールドでMySQLテーブルを作成する
-
[解決済み] django の OneToOneField と ForeignKey の違いは何ですか?
-
[解決済み] FastCGIとDjangoを使用しているnginxのエラーログはどこで見ることができますか?
-
[解決済み] 保存時に、フィールドが変更されたかどうかを確認するにはどうすればよいですか?
-
[解決済み] Django のモデルで電話番号を保存する最良の方法は何ですか?
-
[解決済み] Djangoです。文字列からモデルを取得する?
-
[解決済み] Django は静的ファイルの URL をビューで取得します。
-
[解決済み] Djangoアプリの命名規則はありますか?
-
[解決済み] Djangoのvalues()の項目名を変更する方法は?