قم بإزالة وظيفة "إضافة" في مسؤول Django [نسخة مكررة]

StackOverflow https://stackoverflow.com/questions/1217901

  •  10-07-2019
  •  | 
  •  

سؤال

هذا السؤال لديه بالفعل إجابة هنا:

هل هناك طريقة لإزالة وظيفة "الإضافة" على موقع إدارة Django؟بالنسبة لكيانات معينة، أريد فقط أن يتمكن مسؤول Django من عرضها أو تغيير الكيانات الموجودة، ولكن لا أريد إضافة كيانات جديدة.

هل كانت مفيدة؟

المحلول

بالتأكيد، يمكنك تخصيص المسؤول بشكل دقيق جدًا باتباع التعليمات هنا - أعتقد أن ما تريده يمكن الحصول عليه جزئيًا عن طريق التجاوز ModelAdmin.save_model(self, request, obj, form, change) بالشيء الخاص بك ModelAdmin فئة فرعية، لضمان عدم حدوث أي شيء في المتجر متى change كاذبة (أيمحاولة للإضافة بدلاً من التغيير)، وجزئيًا عن طريق التجاوز ModelAdmin.add_view(self, request, form_url='', extra_context=None) لعرض "عرض إضافة" يوضح تمامًا للمسؤول أنه لن يُسمح له بإضافة كائن من خلال هذا المسار.لم أقم بالفعل بإجراء التخصيص الإداري المحدد الذي تحتاجه، لكنني قمت بإجراء تخصيصات أخرى ويبدو أنها تعمل بسلاسة تامة!

نصائح أخرى

يمكنك تخصيص الإذن لكل مجموعة مستخدمين من داخل واجهة الإدارة:حاول الذهاب الى /admin/auth/group ويجب أن يكون الأمر واضحًا من هناك.

لن يكون هذا دقيقًا مثل الحل الذي قدمته الإجابة السابقة، ولكنه سيلبي معظم احتياجاتك دون الحاجة إلى تخصيص المسؤول.

إذا قمت بتغيير الأذونات لتقييد الوصول، فستظل تحصل على علامة الجمع بواسطة حقل FK/MtM.سيؤدي النقر فوق ذلك إلى فتح نافذة منبثقة بها "تم رفض الإذن".

يمكنك في الواقع إزالة علامة الجمع تمامًا من خلال عدم تسجيل النموذج لدى المسؤول.

لدي موقف قمت فيه بتحديد فئات محددة مسبقًا وأريد أن يتمكن المستخدمون من تحديد أكثر من واحدة منها.أفضل طريقة للقيام بذلك هي باستخدام حقلmodels.ManyToMany.يمكنك تسجيل النموذج لدى المسؤول وإدخال البيانات كما هو مطلوب ثم إزالة التسجيل.

طريقة سهلة وفعالة هي الإعداد max_num=0 لهذا المضمنة معينة.

اقتراح ساتيا بتعيين max_num=0 يعمل بشكل مثالي.

وفقًا لمستندات Django في فئة ModelForm:

بالنسبة للمستخدمين الذين لديهم متصفحات تدعم JavaScript، يتم توفير رابط "إضافة آخر" لتمكين إضافة أي عدد من السطور الإضافية بالإضافة إلى تلك المقدمة كنتيجة للوسيطة الإضافية.

لن يظهر الرابط الديناميكي إذا تجاوز عدد النماذج المعروضة حاليًا الحد الأقصى، أو إذا لم يكن JavaScript ممكنًا لدى المستخدم.

و

كما هو الحال مع مجموعات النماذج العادية، يمكنك استخدام المعلمات max_num والمعلمات الإضافية لـ modelformset_factory للحد من عدد النماذج الإضافية المعروضة.

max_num لا يمنع عرض الكائنات الموجودة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top