2010-01-05 5 views
7

मैं उस उपयोगकर्ता का ट्रैक रखना चाहता हूं जो किसी दिए गए मॉडल के रिकॉर्ड बनाता है और फिर अपडेट करता है। मेरे पास लॉग इन उपयोगकर्ता के उपयोगकर्ता प्रोफाइल में "उपयोगकर्ता" जानकारी है (सभी उपयोगकर्ताओं को इन रिकॉर्ड्स को अपडेट करने के लिए लॉग इन होना चाहिए)।Django मॉडल ऑडिट ट्रेल को कैसे कार्यान्वित करें? मॉडलों को सहेजने() विधि में उपयोगकर्ता में लॉग इन कैसे करते हैं?

+4

यह वास्तव में देर हो चुकी है हालांकि मैंने इसके लिए एक पोस्ट लिखा है जो उपयोगकर्ताओं के लिए उपयोगी हो सकता है जो django में मॉडल ऑडिटिंग करना चाहते हैं: http://spapas.github.io/2015/01/21/django- मॉडल-ऑडिटिंग/ – Serafeim

उत्तर

2

ऐसा लगता है कि आप django-reversion की तलाश में हैं, जो आपको किसी दिए गए मॉडल में सभी परिवर्तनों का ट्रैक रखने की अनुमति देता है, जिसमें परिवर्तन के बारे में कुछ मेटा डेटा भी शामिल हैं (उदा। इसे किसने बनाया)।

+0

Django-revision एक मॉडल की स्थिति को ट्रैक करने के लिए और अधिक है, क्योंकि यह विकसित होता है, रिकॉर्ड को संशोधित करने के लिए अंतिम उपयोगकर्ता को ट्रैक करने में मदद नहीं करता है। – MikeN

+0

हां यह करता है - http://code.google.com/p/django-reversion/wiki/LowLevelAPI –

1

Django मॉडल (उद्देश्य पर) request ऑब्जेक्ट तक पहुंच नहीं है। आपको इसे एक दृश्य में मॉडल में पास करना होगा।

+4

जानबूझकर क्यों नहीं? मैं अभी एक मामले में दौड़ रहा हूं जहां मुझे लगता है कि मुझे मॉडल के अंदर मौजूदा उपयोगकर्ता ऑब्जेक्ट तक पहुंचने की आवश्यकता है। – ultrajohn

1

व्यवस्थापक में किए गए सभी परिवर्तन के लिए स्वचालित रूप से उपयोगकर्ता क्षेत्र स्थापित करने के लिए, अपने व्यवस्थापक कक्षा में save_model विधि (Django डॉक्स से) अधिभावी द्वारा होगा तेज तरीका:

class ArticleAdmin(admin.ModelAdmin): 
    def save_model(self, request, obj, form, change): 
     obj.user = request.user 
     obj.save() 

अन्यथा, आप कर सकते हैं डोमिनिक रॉजर द्वारा वर्णित डीजेंगो-संशोधन जैसे कुछ का उपयोग करें।

+0

का "संस्करण मेटा डेटा" अनुभाग देखें, यह केवल व्यवस्थापक के लिए काम करता है। – MikeN

संबंधित मुद्दे