Saya memiliki situs Django dengan banyak model dan bentuk. Saya memiliki banyak formulir dan formulir kustom serta inlineforms dan validasi kustom serta queryset kustom. Oleh karena itu tindakan menambahkan model tergantung pada formulir yang membutuhkan hal-hal lain, dan 'menambah model' di admin Django melalui 500 dari queryset kustom.
Apakah ada cara untuk menonaktifkan fungsionalitas 'Tambah $ MODEL' untuk model tertentu?
Saya ingin /admin/appname/modelname/add/
memberikan 404 (atau pesan kesalahan 'pergi' yang sesuai), saya tidak ingin tombol 'Tambah $ MODELNAME' ada di /admin/appname/modelname
tampilan.
Admin Django menyediakan cara untuk menonaktifkan tindakan admin (http://docs.djangoproject.com/en/dev/ref/contrib/admin/actions/#disabling-actions) namun satu-satunya tindakan untuk model ini adalah 'delete_selected'. yaitu tindakan admin hanya bertindak pada model yang ada. Apakah ada cara jango-esque untuk melakukan ini?
sumber
Jawaban:
Mudah, cukup dengan
has_add_permission
metode overload diAdmin
kelas Anda seperti ini:sumber
admin.site.register(MyModel, MyModelAdmin)
Tambahkan semua ke dalamadmin.py
folder aplikasi model.obj
parameter.Secara default syncdb menciptakan 3 izin keamanan untuk setiap model:
Jika Anda masuk sebagai Admin, Anda mendapatkan SEMUANYA apa pun yang terjadi.
Tetapi jika Anda membuat grup pengguna baru yang disebut "Akses Umum" (misalnya) maka Anda dapat menetapkan HANYA izin GANTI dan HAPUS untuk semua model Anda.
Maka setiap pengguna yang masuk yang merupakan anggota grup itu tidak akan memiliki izin "Buat", tidak ada yang terkait dengan itu akan ditampilkan di layar.
sumber
Saya pikir ini akan membantu Anda .. kode di bawah ini harus dalam file admin.py
Selain itu di atas seperti yang diposting oleh
sumber
Cukup salin kode dari jawaban lain
Dalam kasus saya, saya menggunakan inline
in
service = formset.form.base_fields['service']
base_fields
adalah bidang yang didefinisikan dalam modeljika didefinisikan dalam bentuk gunakan:
product = formset.form.declared_fields['product']
Lihat juga
sumber
base_fields
dandeclared_fields
temuan terpenting yang saya pelajari dari kasus ini.Ini adalah jawaban yang terlalu lama tertunda; Hanya memposting ini seolah-olah ada orang yang menemukan solusi yang sama.
Dalam file admin.py Anda dapat melakukan hal berikut:
Di sini, "readonly_fields" melakukan keajaiban. Terima kasih.
sumber