Django

2012-06-26 9 views
7

में Search_fields को जोड़ने के लिए मैंने अजगर में पाइथन का उपयोग करके खोज फ़ील्ड जोड़ने की कोशिश की। अनुवर्ती कोड हैं जिनका मैंने उपयोग किया है।Django

# admin.py file 

from django.db import models 
from blog.models import Blog 
from django.contrib import admin 
admin.site.register(Blog) 

class Blog(models.Model): 
    title = models.CharField(max_length=60) 
    body = models.TextField() 
    created = models.DateTimeField("Date Created") 
    updated = models.DateTimeField("Date Updated") 
    def __unicode__(self): 
     return self.title 

class Comment(models.Model): 
    body = models.TextField() 
    author = models.CharField(max_length=60) 
    created = models.DateTimeField("Date Created") 
    updated = models.DateTimeField("Date Updated") 
    post = models.ForeignKey(Blog) 
    def __unicode__(self): 
     return self.body 

class CommentInline(admin.TabularInline): 
    model = Comment 


class BlogAdmin(admin.ModelAdmin): 
    list_display = ('title','created', 'updated') 
    search_fields = ['title','body'] 
    list_filter = ('Date Created','Date Updated') 
    inlines = [CommentInline] 

class CommentAdmin(admin.ModelAdmin): 
    list_display = ('post','author','body_first_60','created','updated') 
    list_filter = ('Date Created','Date Updated') 

मैं निम्नलिखित कोड का उपयोग करके शीर्षक और शरीर के लिए एक search_fields जोड़ने की कोशिश की।

class BlogAdmin(admin.ModelAdmin): 
    . . . 
    search_fields = ('title','body') 
    . . . 

जब मैं इसे चलाता हूं तो मुझे कोई खोज बॉक्स नहीं दिखाई दे रहा है। ऐसा क्यों है ? मुझे आपकी मदद चाहिए। मैं सिर्फ एक नौसिखिया हूँ। धन्यवाद!

उत्तर

21

खोज फ़ील्ड एक सूची होना चाहिए, न कि टुपल।

class BlogAdmin(admin.ModelAdmin): 
    . . . 
    search_fields = ['title','body'] 
    . . . 

फिर सुनिश्चित करें कि आप इस व्यवस्थापक ऑब्जेक्ट को मॉडल के साथ जोड़ते हैं।

admin.site.register(Blog, BlogAdmin) 

संपादित करें:

यह ऊपर से बताना मुश्किल है, लेकिन आप सिर्फ उन्हें अपने admin.py फ़ाइल में फिर से परिभाषित करने के बजाय models.py से मॉडल आयात करने पर विचार करना चाहिए। दोबारा, ऐसा लगता है कि आप ऊपर क्या कर रहे हैं।

admin.py:

from django.db import models 
from blog.models import Blog 
from django.contrib import admin 

class CommentInline(admin.TabularInline): 
    model = Comment 

class BlogAdmin(admin.ModelAdmin): 
    list_display = ('title','created','updated',) 
    search_fields = ['title','body',] 
    list_filter = ('Date Created','Date Updated',) 
    inlines = [CommentInline,] 

class CommentAdmin(admin.ModelAdmin): 
    list_display = ('post','author','body_first_60','created','updated',) 
    list_filter = ('Date Created','Date Updated',) 

admin.site.register(Blog, BlogAdmin) 

models.py

from django.db import models 

class Blog(models.Model): 
    title = models.CharField(max_length=60) 
    body = models.TextField() 
    created = models.DateTimeField("Date Created") 
    updated = models.DateTimeField("Date Updated") 

    def __unicode__(self): 
     return self.title 

class Comment(models.Model): 
    body = models.TextField() 
    author = models.CharField(max_length=60) 
    created = models.DateTimeField("Date Created") 
    updated = models.DateTimeField("Date Updated") 
    post = models.ForeignKey(Blog) 

    def __unicode__(self): 
     return self.body 
+0

मैंने पहले ही यह "admin.site.register (ब्लॉग)" जोड़ा है, लेकिन जब मैं इसे "admin.site.register (ब्लॉग, BlogAdmin)" जोड़ने का प्रयास कर रहा हूं, ब्राउज़र दिखाता है त्रुटि "नाम Error /admin/"... और अभी भी एक ही समस्या है। – Grant

+0

@ ग्रांट, सुनिश्चित करें कि आप से ब्लॉग आयात करते हैं। मॉडल - "myapp.models आयात ब्लॉग से"। यह अन्य आयात विवरणों के साथ शीर्ष पर होना चाहिए। –

+0

मेरी आयात निम्नानुसार है :::::::::: क्या यह सही है ?? ब्लॉग.मोडल्स आयात से ब्लॉग django.contrib आयात व्यवस्थापक से django.db आयात मॉडल admin.site.register (ब्लॉग) – Grant

0

आप साइट के नीचे के बजाय शीर्ष पर अपनी साइट को पंजीकृत करना चाहिए।
कृपया पृष्ठ के निचले हिस्से में admin.site.register (ब्लॉग, BlogAdmin) आज़माएं।
मुझे आशा है कि यह आपके प्रश्न को हल करेगा