का उपयोग कर डीबी मतलब है कि आप Django अनुमति प्रणाली का उपयोग नहीं करना चाहते हैं के बिना एक पर्म बना रहा है। उस बिंदु पर, मैं पूछूंगा कि आप इसका उपयोग क्यों नहीं करना चाहते हैं?
यदि यह Django अनुमति sywstem उपयोग करने के लिए ठीक है, आप एक अनुमति बना सकते हैं और विधि बचाने व्यवस्थापक overrriding ... की तरह से यह जांच कर सकते हैं: अपने models.py
class SomeModel(Model):
your_spec_field = FieldType(...)
class Meta:
permissions = (
("some_perm", u"A name for your default permission"),
)
में
अपने संबंधित admin.py
में
class SomeModelAdmin(ModelAdmin):
def save_model(self, request, obj, form, change):
if change:
curr_value = SomeModel.objects.get(pk=obj.id)
if not request.user.has_perm('<your_app>.some_perm'):
obj.your_spec_field = curr_value.your_spec_field
else:
if not request.user.has_perm('<your_app>.some_perm')
obj.your_spec_field = '' # or the default value according to your field type
obj.save()
इस दृष्टिकोण में, आप इसे सहेजने से पहले संबंधित रिकॉर्ड की स्थिति प्राप्त करते हैं और संबंधित अनुमति की जांच करते हैं। यदि उपयोगकर्ता के पास आवश्यक अनुमति नहीं है। तो आप अपने क्षेत्र के मान को पिछले एक के साथ बदलते हैं। यदि यह एक नया रिकॉर्ड है, तो आप उस फ़ील्ड को अपने इच्छित मूल्य पर सेट कर सकते हैं।
क्या आपका मतलब '/ admin/auth/group/add /' है? –
धन्यवाद लेकिन मुझे विशिष्ट अनुमति बनाने की आवश्यकता है। इसलिए केवल इस अनुमति वाले उपयोगकर्ता मॉडल के विशिष्ट क्षेत्र को बदल सकते हैं। मुझे बस कुछ उपयोगकर्ताओं के लिए 'फ़ील्डोनली' बनाने की ज़रूरत है .. –
आप 'can_change_xy' जैसी कस्टम अनुमति को परिभाषित कर सकते हैं और स्पष्ट रूप से उस दृश्य को' user.has_perm() 'के साथ अपने दृश्य फ़ंक्शन में देख सकते हैं। जहां तक मुझे पता है, व्यक्तिगत क्षेत्र अनुमतियों के लिए कोई सामान्य समाधान नहीं है। Http://docs.djangoproject.com/en/dev/topics/auth/#custom-permissions और http://docs.djangoproject.com/en/dev/topics/auth/#django.contrib.auth.models देखें .User.has_perm। –