2013-10-02 6 views
6

में कीवर्ड 'XXXX' को हल नहीं कर सकता यह एक बहुत ही अजीब त्रुटि है। मैं इसे केवल अपने heroku सर्वर पर प्राप्त करता हूं।फ़ील्ड त्रुटि: फ़ील्ड

# Abstract Model 

class CommonInfo(models.Model): 
    active = models.BooleanField('Enabled?', default=False) 
    date_created = models.DateTimeField(auto_now_add=True) 
    date_updated = models.DateTimeField(auto_now=True) 

    class Meta: 
     abstract = True 


class Country(CommonInfo): 
    name = models.CharField('Country Name', db_index=True, max_length=200, help_text='e.g. France') 
    official_name = models.CharField('Official Name', max_length=400, blank=True, help_text='e.g. French Republic') 
    population = models.IntegerField('Population', help_text='Population must be entered as numbers with no commas or separators, e.g. 39456123', null=True, blank=True) 
    alpha2 = models.CharField('ISO ALPHA-2 Code', max_length=2, blank=True) 


class News(CommonInfo): 
    title = models.CharField('Title', max_length=250) 
    slug = models.CharField('slug', max_length=255, unique=True) 
    body = models.TextField('Body', null=True, blank=True) 
    excerpt = models.TextField('Excerpt', null=True, blank=True) 
    author = models.ForeignKey(Author) 
    country = models.ManyToManyField(Country, null=True, blank=True) 

    def __unicode__(self): 
      return self.title 

जब मैं अपने उत्पादन सर्वर पर व्यवस्थापक साइट से समाचार आइटम तक पहुँचने का प्रयास, मैं (सब कुछ मेरी देव सर्वर पर ठीक काम करता है) यह त्रुटि प्राप्त:

यहाँ कैसे अपने मॉडल है

FieldError: Cannot resolve keyword 'news' into field. Choices are: active, alpha2, date_created, date_updated, id, name, official_name, population 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/query.py", line 687, in _filter_or_exclude 
    clone.query.add_q(Q(*args, **kwargs)) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1271, in add_q 
    can_reuse=used_aliases, force_having=force_having) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1139, in add_filter 
    process_extras=process_extras) 
    File "/app/.heroku/python/lib/python2.7/site-packages/django/db/models/sql/query.py", line 1337, in setup_joins 
    "Choices are: %s" % (name, ", ".join(names))) 

मैं अपने उत्पादन और विकास वातावरण पर एक ही django (1.5.4) और पायथन (2.7.2) संस्करण चलाता हूं।

मेरे उत्पादन सर्वर Heroku

कोई भी विचार क्या त्रुटि से चलाता सकता

है?

अद्यतन:

admin.py config पालन है:

from django.contrib import admin 
from APP.models import Country, News 


class NewsForm(ModelForm): 
    class Meta: 
     model = News 


class NewsAdmin(ModelAdmin): 

    form = NewsForm 

    search_fields = ['title', 
        'country__name'] 
    list_filter = ('country', 
        'active' 
        ) 
    list_per_page = 30 
    list_editable = ('active',) 
    list_display = ('title', 
        'active' 
        ) 
    list_select_related = True 
    prepopulated_fields = {"slug": ("title",)} 

admin.site.register(Country) 
admin.site.register(News, NewsAdmin) 
+0

तो ऐसा तब होता है जब आप व्यवस्थापक तक पहुंचते हैं? क्या आप अपना admin.py फ़ाइल कोड पोस्ट कर सकते हैं? – jproffitt

+0

जहां भी मुझे कई सारे रिश्ते तक पहुंचने की ज़रूरत है। – AlirezaJ

+0

क्या आप प्रासंगिक कोड पोस्ट कर सकते हैं जो त्रुटि उत्पन्न करता है? – jproffitt

उत्तर

10

अंत में, मैं इस मुद्दे को हल करने में सक्षम था।

सबसे पहले, मैंने अपने स्थानीय वातावरण में त्रुटि को दोहराने में कामयाब रहे। सबसे पहले, मैं अंतर्निहित Django रनरवर का उपयोग कर एप्लिकेशन का परीक्षण कर रहा था। हालांकि, मेरा उत्पादन पर्यावरण हेरोोकू है जो गनिकोर्न का उपयोग वेबसर्वर के रूप में करता है। जब मैंने अपने स्थानीय सर्वर पर गनिकोर्न और फोरमैन पर स्विच किया, तो मैं त्रुटि को दोहराने में सक्षम था।

दूसरा, मैंने मॉडल के माध्यम से जाने और विभिन्न घटकों, फ़ील्ड को जोड़ने/निकालने के द्वारा इस मुद्दे को इंगित करने का प्रयास किया। प्रक्रिया को बेहतर तरीके से समझाने के लिए, मुझे मूल प्रश्न में एक लापता टुकड़ा जोड़ना होगा।

मैंने जो पोस्ट ऊपर पोस्ट किया था वह अपूर्ण है। मेरे मॉडल.py में मेरा एक और मॉडल है जिसमें मैंने अपने मूल प्रश्न में शामिल नहीं किया था, क्योंकि मैंने सोचा था कि यह प्रासंगिक नहीं था। यहाँ पूरा मॉडल है:

# Abstract Model 
class CommonInfo(models.Model): 
    active = models.BooleanField('Enabled?', default=False) 
    date_created = models.DateTimeField(auto_now_add=True) 
    date_updated = models.DateTimeField(auto_now=True) 

    class Meta: 
     abstract = True 


class Country(CommonInfo): 
    name = models.CharField('Country Name', db_index=True, max_length=200, help_text='e.g. France') 
    official_name = models.CharField('Official Name', max_length=400, blank=True, help_text='e.g. French Republic') 
    population = models.IntegerField('Population', help_text='Population must be entered as numbers with no commas or separators, e.g. 39456123', null=True, blank=True) 
    alpha2 = models.CharField('ISO ALPHA-2 Code', max_length=2, blank=True) 

def get_country_names(): 
    names = Country.objects.only('name').filter(active=1) 
    names = [(str(item), item) for item in names]  

    return names 

class Person(CommonInfo): 
    name = models.CharField(max_length=200) 
    lastname = models.CharField(max_length=300) 
    country = models.CharField(max_length=250, choices=choices=get_country_names()) 

class News(CommonInfo): 
    title = models.CharField('Title', max_length=250) 
    slug = models.CharField('slug', max_length=255, unique=True) 
    body = models.TextField('Body', null=True, blank=True) 
    excerpt = models.TextField('Excerpt', null=True, blank=True) 
    author = models.ForeignKey(Author) 
    country = models.ManyToManyField(Country, null=True, blank=True) 

    def __unicode__(self): 
     return self.title 

मेरे मॉडल के डिजाइन व्यक्ति की मेज के लिए एक ForeignKey आवश्यकता नहीं किया था, इसलिए मैं एक साधारण CharField के साथ जाने का फैसला किया था और इसके बजाय, डाउन मेनू एक नियमित रूप से ड्रॉप का उपयोग करें। हालांकि, किसी कारण से, गनिकोर्न उपर्युक्त त्रुटि उठाता है, जब get_country_names() के हिस्से के रूप में, देश तालिका को समाचार से पहले बुलाया जाता है। जैसे ही मैंने get_country_names() को हटा दिया और व्यक्तिगत तालिका को व्यक्तिगत तालिका में नियमित रूप से चार फ़ील्ड में बदल दिया, तो समस्या हल हो गई।

चेस सेबर्ट द्वारा this old Django bug और this post में टिप्पणियों के माध्यम से पढ़ना इस प्रक्रिया में मुझे काफी मदद मिली।

हालांकि टिकट # 1796 6 साल पहले तय किया गया प्रतीत होता है, ऐसा लगता है कि कुछ छोटे मुद्दे अभी भी गहरे दफन में रहते हैं।

यह बात है! सबको धन्यवाद।

2

मेरे पास कुछ बहुत से रिश्ते थे जो एक तरफ काम कर रहे थे। मैं अपनी सेटिंग्स के साथ गड़बड़ कर रहा था और मुख्य आवेदन के नाम को दो बार बदल रहा था। लाइनों के साथ कहीं, मैंने इसे INSTALLED_APPS अनुभाग से हटा दिया था! एक बार जब मैंने इसे वापस जोड़ा, तो यह काम किया। निश्चित रूप से पीईबीकेएसी, लेकिन शायद यह किसी दिन किसी की मदद करेगा। इसके लिए जांच करने के बारे में सोचने में मुझे कुछ समय लगा, क्योंकि ऐप ज्यादातर काम कर रहा था।

उदाहरण के लिए, मेरे ऐप को deathvalleydogs कहा जाता है। मैं दो मॉडल था:

class Trip(ModelBase): 
    dogs = models.ManyToManyField(Dog, related_name="trips") 

class Dog(ModelBase): 
    name = models.CharField(max_length=200) 

जब मैं Dogs है कि इस तरह की यात्रा पर थे लिस्टिंग एक Trip के लिए एक टेम्पलेट को दिखाने की कोशिश की:

{% for dog in trip.dogs.all %} 
    <li><a href="/dogs/{{ dog.id }}">{{ dog.name }}</a></li> 
{% endfor %} 

फिर मैं की एक त्रुटि मिली:

Cannot resolve keyword u'trips' into field. Choices are: active, birth_date, ... 

हालांकि मैं अभी भी Dog के लिए एक टेम्पलेट दिखाने में सक्षम था, जिस यात्रा पर वे थे। ध्यान दें कि tripsDog ऑब्जेक्ट्स पर m2m द्वारा बनाए गए फ़ील्ड को होना चाहिए था। मैं उस फ़ील्ड को टेम्पलेट में संदर्भित नहीं कर रहा था, लेकिन यह डीबग मोड में वैसे भी उस क्षेत्र में बार्फ़ किया गया था।

मेरी इच्छा है कि त्रुटि अधिक स्पष्ट हो, लेकिन मैं बस इतना खुश हूं कि मुझे अंततः मेरी गलती मिली !!!

3

संभावित परिस्थितियों में जोड़ना जिसके तहत यह होता है। मैंने उस क्षेत्र की खोज की जो मेरे किसी भी मॉडल में नहीं मिल सका।

कोड मैंने पाया कि मैं इस तरह के क्षेत्र के साथ एक क्वेरीसमूह व्याख्या की गई थी और फिर एक और करने के लिए एक __in खोज के रूप में है कि क्वेरीसमूह (अन्य जटिल प्रश्नों साथ) खिला पर सर्च कर रहे हैं।

मेरा काम आसपास एनोटेटेड क्वेरीसेट को आईडी वापस करने और उसका उपयोग करने के लिए बदलना था। इस विशेष मामले पर परिणाम हमेशा छोटा होने वाला था इसलिए आईडी की सूची पास करने में कोई समस्या नहीं थी।

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