2012-02-07 17 views
10

मैं कुछ स्पष्ट रूप से सरल हासिल करने की कोशिश कर रहा हूं लेकिन मुझे कोई जवाब नहीं मिला, न तो Google पर और न ही यहां। मैं एक Django मॉडल, कुछ मृत-सरल है:व्यवस्थापक में विदेशी कुंजी आईडी द्वारा खोजें

class Shipment(models.Model): 
    id = models.AutoField(primary_key=True) 
    transaction = models.ForeignKey(Transaction) 

मैं transaction.id के आधार पर अपने शिपमेंट व्यवस्थापक पृष्ठ में खोज करने के लिए सक्षम होने के लिए करना चाहते हैं। स्पष्टता, करने के लिए मैं यह चाहता हूँ (इस कोड को स्पष्ट रूप से काम नहीं करता है):

class ShipmentAdmin(admin.ModelAdmin): 
    list_display = ('id', 'transaction') 
    search_fields = ['id', 'transaction.id'] 

इस कारण transaction.id काम नहीं कर सकता एक क्षेत्र का नाम नहीं है। कोई उपाय? "खोज" से मेरा मतलब है कि शिपमेंट व्यवस्थापक पृष्ठ के खोज बॉक्स के अंदर मेरा लेनदेन आईडी डालने में सक्षम हो, "खोज" दबाएं और स्वचालित लेनदेन को स्वचालित रूप से पुनर्प्राप्त करें।

उत्तर

25
साथ के रूप में

अन्य व्यवस्थापक विकल्प, आपको __ for foreign key एस उदाहरण का उपयोग करने की आवश्यकता है

search_fields = ['id', 'transaction__id'] 
+0

धन्यवाद, यह काम किया :) –

+0

यदि आप विदेशी कुंजी के दो स्तर ऊपर जा रहे हैं काम करने के लिए नहीं लगता है, यानी 'allocation__project__name' जहां आवंटन काम नहीं करता है परियोजना के लिए एक एफके है और परियोजना का नाम है। आप इसे कैसे हल करते हैं? मैं मिलती रहती है – radtek

+1

@radtek, मेरे लिए काम करने लगता है कि, " नहीं एक प्रतिदेय, की एक विशेषता है" मैं fk1__fk2__field, केवल 1.7 यद्यपि में करने की कोशिश की क्या कर सकते हैं आवंटन और परियोजना सिर्फ ForeignKey()? – JamesO

4

search_fields documentation:

तुम भी एक संबंधित देखने एक ForeignKey या देखने एपीआई के साथ ManyToManyField पर प्रदर्शन अंकन

समाधान "का पालन करें" कर सकते हैं:

search_fields = ['id', 'transaction__id'] 
+0

दस्तावेज़ लिंक के लिए धन्यवाद :) –

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