मेरे पास Django के व्यवस्थापक में एक मॉडल सामने आया है, जो "उपयोगकर्ता" फ़ील्ड दिखाने के लिए ModelAdmin की readonly_fields सूची का उपयोग करता है, जो Django के उपयोगकर्ता मॉडल से जुड़ी फोरीग्नकी है। डिफ़ॉल्ट रूप से, readonly_fields इस फ़ील्ड को उपयोगकर्ता के ईमेल (उदा। [email protected]
) युक्त सरल टेक्स्ट के रूप में प्रस्तुत करने का कारण बनता है। मैं उस उपयोगकर्ता के लिए संबंधित व्यवस्थापक पृष्ठ के लिंक के रूप में प्रस्तुत करने के लिए इसे कैसे बदलूं? (उदाहरण के लिए <a href="/admin/auth/user/123/">[email protected]</a>
)व्यवस्थापक में Django Readonly ForeignKey फ़ील्ड को एक लिंक के रूप में प्रस्तुत करें
10
A
उत्तर
33
स्रोत कोड में खोदने के बाद, मैंने पाया कि आप अनिवार्य रूप से अपने मॉडल एडिन सबक्लास के भीतर अपने स्वयं के फ़ील्ड को परिभाषित कर सकते हैं, और आप विधि से लिंक एचटीएमएल वापस लौटकर एक लिंक के रूप में प्रस्तुत करने के लिए फ़ील्ड प्राप्त कर सकते हैं ।
उदा
from django.contrib import admin
from django.utils.safestring import mark_safe
from django.core import urlresolvers
class MyModelAdmin(admin.ModelAdmin):
readonly_fields = ['user_link']
def user_link(self, obj):
change_url = urlresolvers.reverse('admin:auth_user_change', args=(obj.user.id,))
return mark_safe('<a href="%s">%s</a>' % (change_url, obj.user.email))
user_link.short_description = 'User'
1
Cerin का जवाब, मेरे Django 1.8 परियोजना में काम नहीं करता क्योंकि readonly_fields स्ट्रिंग 'USER_LINK' शामिल नहीं होना चाहिए, लेकिन परिभाषित समारोह के लिए एक संदर्भ:
class ProfileAdmin(admin.ModelAdmin):
# https://docs.djangoproject.com/en/1.8/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display
def user(obj):
change_url = reverse('admin:auth_user_change', args=(obj.user.id,))
return mark_safe('<a href="{0}">{1}</a>'.format(change_url, obj.user.email))
user.short_description = 'Edit linked user'
raw_id_fields = ('user',)
list_display = (user, 'last_name', 'first_name', 'specialization',)
list_display_links = ('first_name', 'last_name', ,)
readonly_fields = (user, 'user',)
नोट उपयोगकर्ता (obj) दोनों को ओवरराइड करता है कि Profile.user फ़ील्ड के लिए एकल मॉडल संपादन और मॉडल सूची प्रदर्शन। ध्यान दें कि readonly_fields उपयोगकर्ता और 'उपयोगकर्ता' दोनों का उपयोग करता है, एक लिंक किए गए ईमेल को प्रस्तुत करता है, दूसरा उपयोगकर्ता नाम।
संबंधित मुद्दे
- 1. व्यवस्थापक में Django ForeignKey फ़ील्ड्स के प्रदर्शन में सुधार
- 2. Django में जेनेरिक ForeignKey और व्यवस्थापक
- 3. Django: व्यवस्थापक इंटरफ़ेस में एक फ़ील्ड लेना?
- 4. Django व्यवस्थापक साइट रिवर्स ForeignKey इनलाइन
- 5. Django व्यवस्थापक, छिपाने + प्लस विशिष्ट foreignkey क्षेत्र
- 6. Django व्यवस्थापक: एक इनलाइन के रूप में OneToOne संबंध?
- 7. Django व्यवस्थापक: मॉडल में संपादन योग्य = गलत 'के रूप में चिह्नित फ़ील्ड को कैसे प्रदर्शित करें?
- 8. Django व्यवस्थापक विकल्प फ़ील्ड
- 9. Django व्यवस्थापक में, एक इनलाइन
- 10. उपयोगकर्ताओं के लिए django व्यवस्थापक में किसी फ़ील्ड को बहिष्कृत नहीं करें सुपर व्यवस्थापक
- 11. Django व्यवस्थापक सूची प्रदर्शन + ForeignKey = खाली परिवर्तन सूची
- 12. django व्यवस्थापक साइट से लिंक
- 13. Django - व्यवस्थापक फॉर्म फ़ील्ड को प्रीपॉलेट कैसे करें
- 14. Django: क्यों एक ForeignKey परिभाषा
- 15. Django के बारे में उलझन foreignkey, manytomanyfield, inlineformset_factories
- 16. मैं Django ModelForm में ForeignKey विकल्पों को कैसे फ़िल्टर करूं?
- 17. Django व्यवस्थापक को अनुवादित फ़ील्ड नामों का उपयोग करें
- 18. Django में एक फॉर्म फ़ील्ड के रूप में दो मॉडल फ़ील्ड का प्रतिनिधित्व कैसे करें?
- 19. Django: व्यवस्थापक इंटरफ़ेस में छवि प्रदर्शित करें
- 20. Django व्यवस्थापक: रीडोनली फ़ील्ड को प्रारूपित करने के लिए कैसे?
- 21. एचटीएमएल को एक छवि के रूप में प्रस्तुत करें
- 22. Django व्यवस्थापक में किसी फ़ील्ड के क्लिक करने योग्य लिंक कैसे जोड़ें?
- 23. Django foreignkey क्वेरी
- 24. आईओएस - UIDatePicker को इनपुट के रूप में प्रस्तुत करें
- 25. Django व्यवस्थापक: सशर्त रूप से फ़ील्ड प्रदर्शित करने की आवश्यकता
- 26. django-taggit: व्यवस्थापक को
- 27. पहुँच ForeignKey Django
- 28. django में गंदे फ़ील्ड
- 29. Django व्यवस्थापक - सभी फ़ील्ड को पढ़ने के लिए
- 30. Django व्यवस्थापक इंटरफ़ेस में फ़ील्ड के लिए रीडोनली विधि को कभी भी
यह वास्तव में दस्तावेज है, यद्यपि अप्रत्यक्ष रूप से: 'readonly_fields' के लिए अनुभाग का कहना है कि यह" list_display' के लिंक के साथ "ModelAdmin.list_display" के समान व्यवहार करता है, जहां कस्टम विधि विकल्प परिभाषित किया गया है। –
mark_safe के बजाय 'user_link.allow_tags = True'' करें और फिर यह विधि चेंजलिस्ट में भी काम करती है। –
यदि आप किसी अन्य प्रकार से लिंक कर रहे हैं, तो यह आमतौर पर 'urlresolvers.reverse (' admin: _ _change ', ...) है। उचित तारों के साथ और बदलें। –
Seth