2010-08-18 16 views
25

से गायब है, मुझे पता चला कि इस प्रश्न को लिखते समय समस्या क्या थी। अगर मैं किसी और की मदद कर सकता हूं तो मैं इसे किसी भी तरह पोस्ट करता हूं।Django ModelAdmin - फ़ील्ड्स ... फ़ील्ड 'दिनांक' फॉर्म

त्रुटि: 'FooAdmin.fieldsets [0] [1] [' फ़ील्ड ']' फ़ॉर्म से अनुपलब्ध फ़ील्ड 'दिनांक' को संदर्भित करता है।

निम्नलिखित कोड के साथ

:

# models.py 
from django.db import models 

class Foo(Base): 
    date = models.DateField(auto_now_add=True) 
    title = models.CharField(max_length=255) 

# admin.py 
from django.contrib import admin 

class FooAdmin(BaseAdmin): 
    list_display = ("title", "date") 
    fieldsets = (
     (None, { 
      "fields": ("date", "title") 
     }), 
    ) 

admin.site.register(Foo, FooAdmin) 
+2

आपकी समस्या हल करने के बावजूद पोस्ट करने के लिए धन्यवाद, मैं इस सप्ताह के शुरू में इसी मुद्दे में भाग गया। –

+0

क्या आप प्रश्न निकाय से उत्तर निकाल सकते हैं, और इसे अलग से पोस्ट कर सकते हैं? स्टैक ओवरफ़्लो नियमित (मेरे जैसे) को यह जानना आसान लगेगा कि इस प्रश्न का उत्तर दिया गया है, और फिर भी हम आपके उत्तर को ऊपर उठा सकते हैं। साइट पर योगदान के लिए धन्यवाद! –

+0

@ डोमिनिक: ठीक है! माफ़ कीजिये। –

उत्तर

62

त्रुटि auto_now_add=True (या auto_now=True) होने की तिथि के कारण है।
चूंकि मान स्वचालित है, यह संपादन योग्य नहीं है, इसलिए यह फ़ॉर्म में नहीं है। कि हल करने के लिए, FooAdmin में जोड़ें:

readonly_fields = ("date",) 
+0

readonly_fields django 1.2 में पेश किया गया था - इसलिए यह पिछले संस्करणों में काम नहीं करेगा। सोचा कि यह उल्लेख करने लायक था। – rombarcz

+2

Django के अप्रिय रूप से अनजान त्रुटि संदेश के बावजूद एक साधारण समाधान खोजने पर बढ़िया काम। – Cerin

6

मेरे समस्या वास्तव में थोड़ा अलग था। मेरी समस्या में मॉडल विरासत और django.contrib.admin उपयोगकर्ता मॉडल शामिल थे।

इस समस्या का कारण:

from django.utils.translation import ugettext_lazy as _ 
from django.contrib.auth.admin import UserAdmin 
class AdminUser (UserAdmin): 
    fieldsets = UserAdmin.fieldsets + (
     (_('APPS Info'), {'fields': ('agency', 'company')}), 
    ) 

जहां "एजेंसी" और "कंपनी" मेरे उपयोगकर्ता मॉडल है कि Django के उपयोगकर्ता मॉडल का विस्तार के क्षेत्र हैं। Readonly_fields में उन फ़ील्ड को रखने का आपका समाधान त्रुटि को ठीक करता था, लेकिन तब उन फ़ील्ड केवल पढ़ने के लिए थे, जो मैं नहीं चाहता था। मैंने पाया कि समस्या यह थी कि dzango.contrib.admin में इस्तेमाल किया गया मॉडलफॉर्म मॉडल को डीजेगो के उपयोगकर्ता मॉडल में सेट कर रहा था। तो इसे ठीक करने के लिए मैंने इसे जोड़ा:

from django.contrib.auth.admin import UserAdmin, UserChangeForm as DjangoUserChangeForm 
from django.utils.translation import ugettext_lazy as _ 
from apps_models.users.models import User 
class UserChangeForm(DjangoUserChangeForm): 
    class Meta: 
     model = User 
class AdminUser (UserAdmin): 
    fieldsets = UserAdmin.fieldsets + (
     (_('APPS Info'), {'fields': ('agency', 'company')}), 
    ) 
    form = UserChangeForm 

मॉडल विरासत का उपयोग करने के लिए मुझे यही मिलता है ... यह सुंदर नहीं है, लेकिन यह काम पूरा हो गया है।

तो ऐसा लगता है जैसे हमें एक ही त्रुटि मिल रही थी, लेकिन विभिन्न कारणों से।

3

यह भी मदद मिल सकती है कुछ लोगों को त्रुटि पता करने के लिए भी प्रतीत होता है जब वहाँ ModelAdmin में गलत fieldsets कर रहे हैं, ... जब माइग्रेशन कर और निकाले गए क्षेत्रों को हटाने के लिए भूल के रूप में ....

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