2009-05-13 19 views
18

मैं एक बहुत ही सरल वेब अनुप्रयोग के लिए Django व्यवस्थापक इंटरफ़ेस का उपयोग करना चाहते हैं, लेकिन मैं एक समस्या यह है कि कि कठिन हल करने नहीं होना चाहिए चारों ओर नहीं मिल सकता है ..Django व्यवस्थापक साइट के साथ created_by क्षेत्र स्वत: पॉप्युलेट

पर विचार करें निम्नलिखित:

class Contact(models.Model): 
    name = models.CharField(max_length=250, blank=False) 
    created_by = models.ForeignKey(User, blank=False) 

मुझे create_by फ़ील्ड को स्वत: पॉप्युलेट करने और Django व्यवस्थापक को इसके बारे में जागरूक करने का कोई तरीका नहीं मिल रहा है। मैंने देखा है कि अधिकांश विधि ऑब्जेक्ट की सेव विधि को अधिभारित करती है और इसे अनुरोध उपयोगकर्ता पास करती है। उन्हें सभी को आपके कस्टम विचार और/या रूपों को बनाने की आवश्यकता है।

व्यवस्थापक साइट में नए संपर्क बनाने के लिए फॉर्म को बनाए गए फॉर्म को create_by फ़ील्ड (जो काफी आसान है) नहीं दिखाना चाहिए और वर्तमान उपयोगकर्ता के साथ ऑटो-पॉप्युलेट करना चाहिए (जो इसे से कठिन लगता है)।

उत्तर

23

http://code.djangoproject.com/wiki/CookBookNewformsAdminAndUser

अपने ModelAdmin वस्तुओं पर तरीकों को बचाने को लागू करना शामिल।

+0

वही है जो मैं खोज रहा था, धन्यवाद! –

+1

यह बहुत उपयोगी था और यह मुझे दस्तावेज़ पृष्ठ पर ले गया, जो इससे भी बेहतर है क्योंकि यह आपको Django के अपने संस्करण का चयन करने देता है! उदा।, संस्करण 1.6: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/ – sage

4

आपको फ़ील्ड के लिए default निर्दिष्ट करने की आवश्यकता है, इस मामले में एक विधि कॉल जो वर्तमान उपयोगकर्ता को प्राप्त करता है (वर्तमान उपयोगकर्ता को प्राप्त करने के लिए लेख दस्तावेज़ देखें)।

1

मैं वास्तव में उन लोगों की तुलना में बेहतर समाधान चाहता था जिन्हें मैंने कहीं और पाया, इसलिए मैंने Populate user Id question पर कुछ मिडलवेयर - कार्यान्वयन लिखा। मेरे समाधान के लिए किसी भी रूप या दृश्य में कोई बदलाव की आवश्यकता नहीं है।

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