モデルに「必須」のフィールド (スラッグ) がありますが、ModelAdmin クラスのフィールドをオプションに変更したいと考えています。ユーザーが入力しない場合は、別のフィールド (名前) によって自動的に入力されます。
class SomeModel(model.Model):
name = model.CharField(max_length=255)
slug = model.SlugField(unique=True, max_length=255)
ModelAdmin 内で get_form() をオーバーライドしたり、ModelForm クラスを使用してフォームを具体的に指定したりするなど、さまざまな方法でこれを実行しようとしました。
class SomeModelAdmin(admin.ModelAdmin):
def get_form(self, request, obj=None, **kwargs):
form = super(self.__class__, self).get_form(request, obj, **kwargs)
form.slug.required = False
return form
ただし、どちらのソリューションもうまくいきませんでした。フォームを手動で作成する以外に、もっと迅速な解決策はありますか?
私はこれらのフォームをたくさん持っていますが、手作業で行うのは面倒で維持するのが難しいかもしれません.