سؤال

كنت أتساءل عما إذا كان من الممكن استخدام صفحة إدارة Django للمستخدمين الخارجيين.

لنفترض أن لدي هذه النماذج:

class Publisher(models.Model):
  admin_user = models.ForeignKey(Admin.User)
  ..

class Publication(models.Model):
  publisher = models.ForeignKey(Publisher)
  ..

لست متأكدًا تمامًا من اسم admin_user - ربما يكون البريد الإلكتروني لمستخدم مسؤول؟

على أي حال.هل هناك طريقة تسمح للمستخدم المسؤول بإضافة/تحرير/حذف المنشورات التي يرتبط ناشرها بهذا المستخدم الإداري فقط؟

-شكرًا!-كريس

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

المحلول

إذا كنت بحاجة إلى أذونات أكثر دقة في تطبيقاتك الخاصة، تجدر الإشارة إلى أن تطبيق Django الإداري يدعم ذلك، عبر الطرق التالية التي يمكن تجاوزها في الفئات الفرعية من ModelAdmin.لاحظ أن كل هذه الأساليب تتلقى كائن HttpRequest الحالي كوسيطة، مما يسمح بالتخصيص بناءً على المستخدم المصادق عليه المحدد:

  • queryset(self, request): يجب إرجاع QuerySet للاستخدام في قائمة كائنات المشرف الخاصة بالنموذج.لن يتم عرض الكائنات غير الموجودة في QuerySet هذه.
  • has_add_permission(self, request): يجب أن يُرجع True إذا كان إضافة كائن مسموحًا به، ويُرجع False بخلاف ذلك.
  • has_change_permission(self, request, obj=None): يجب أن يُرجع True إذا كان تحرير obj مسموحًا به، ويُرجع False بخلاف ذلك.إذا كانت قيمة obj بلا، فيجب إرجاع True أو False للإشارة إلى ما إذا كان تحرير الكائنات من هذا النوع مسموحًا به بشكل عام (على سبيل المثال، إذا كان False سيتم تفسيره على أنه يعني أن المستخدم الحالي غير مسموح له بتحرير أي كائن من هذا النوع).
  • has_delete_permission(self, request, obj=None): يجب أن يُرجع True إذا كان حذف الكائن مسموحًا به، ويُرجع False بخلاف ذلك.إذا كانت قيمة obj بلا، فيجب إرجاع True أو False للإشارة إلى ما إذا كان حذف الكائنات من هذا النوع مسموحًا به بشكل عام (على سبيل المثال، إذا كان False سيتم تفسيره على أنه يعني أنه غير مسموح للمستخدم الحالي بحذف أي كائن من هذا النوع).

[جانغو.كوم]

نصائح أخرى

ويمكن، إلى حد ما، أن يقتصر المشرف جانغو. لمستخدم معين، أولا، يجب أن يكون لديك حقوق المشرف لتسجيل الدخول إلى موقع الإدارة. يمكن لأي شخص مع هذه المجموعة العلم عرض كل الصفحات المشرف. إذا كنت ترغب في تقييد العرض، كنت خارجا من الحظ، لأنه لم يتم تنفيذ فقط. من هناك، كل مستخدم لديه مجموعة من الأذونات، لإنشاء وتحديث وحذف، لكل نموذج في موقع الإدارة. أنسب طريقة للتعامل مع ذلك هي إنشاء مجموعات، ومن ثم تعيين أذونات إلى المجموعات.

وأرى الجواب كريس كانت مفيدة في طرح السؤال مرة. ولكن الآن حان تقريبا 2016 واعتقد انه يحصل على أكثر سهولة لتمكين الوصول المقيد من Django Admin panel إلى المستخدم النهائي.

ونظام التوثيق جانغو على ما يلي:

<اقتباس فقرة>   

والمجموعات: وهناك طريقة عامة لتطبيق التسميات وأذونات لأكثر من مستخدم واحد

وأين يمكن للمرء أن إضافة أذونات محددة وتطبيق تلك المجموعة إلى المستخدم عبر لوحة الادارة أو مع رموز الكتابة.

وبعد إضافة المستخدم إلى تلك الجماعات محددة، المسؤول تحتاج إلى تمكين العلم is_staff لهؤلاء المستخدمين.

سوف

والعضو أن يكون قادرا الوصول نماذج مسجلة مقيدة في الادارة. آمل أن يساعد هذا.

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