我正在使用 django admin 并將 a 添加TabularInline到我的 ModelAdmin 類。想想Author和行內是Books. 我如何根據每個特定行內的模型實體的某些特征使其中一些行內顯示為只讀,而另一些顯示為可編輯?假設我希望 2001 年之前寫的所有書籍都是只讀的。在此之后撰寫的所有書籍都是可編輯的。
我已經嘗試覆寫has_change_permission()TablularInline 并使用obj引數,但它正在接收父級而不是此特定行內的實體。
uj5u.com熱心網友回復:
您必須覆寫您的行內表單并檢查__init__().
例子:
class AuthorBookInlineForm(forms.ModelForm):
model = Book
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance and self.instance.created_ts.year <= 2001:
for f in self.fields:
self.fields[f].widget.attrs['readonly'] = 'readonly'
不要忘記在您的行內設定表單值...
class AuthorBookInline(admin.TabularInline):
model = Book
form = AuthorBookInlineForm
extra = 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/381159.html
