Django AttributeError: 'str' object n'a pas d'attribut "_default_manager'

L'erreur suivante semble se produire de façon aléatoire sur mon serveur live (c'est à dire par le biais de apache mod_wsgi), mais jamais dans le développement (ex: localhost python manage.py runserver).

Noter que ce n'est pas fréquent et n'est pas quelque chose qui peut être reproduit ou à chaque fois qu'une url spécifique est accessible.

J'ai vu des différentes réponses postées ici sur soi et sur google, mais il ne semble pas y être de façon définitive sur la raison pour laquelle cette erreur se produit. C'est peut-être parce que l'erreur est assez générique, mais la réponse la plus courante semble être due à la circulaire erreurs d'importation. Une autre réponse que j'ai vu est que le modèle FK champ de références n'ont pas été le cas approprié (par exemple, applabel.modèle au lieu de applabel.Modèle), mais tous mes modèle FK champs sont corrects.

La cause de l'erreur semble pointer à l'un de mes admin.py les fichiers. Ce fichier a été à l'origine de l'importation de formulaire personnalisé classes à partir d'un forms.py fichier. À la fois la admin.py fichier et forms.py fichier importé les mêmes modèles à partir d'une models.py fichier. J'ai donc déplacé la forme de classes à la admin.py le fichier au cas où il y a une référence circulaire produit ici, mais j'ai encore de temps en temps obtenir ces erreurs.

Quelqu'un pourrait nous donner un indice quant à pourquoi cette erreur se produit et pourquoi donc, au hasard? J'ai toujours s'assurer que les services concernés sont redémarré après une mise à jour du code.

Traceback est:

Traceback (most recent call last):

File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py", line 101, in get_response
request.path_info)

File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py", line 250, in resolve
for pattern in self.url_patterns:

File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py", line 279, in _get_url_patterns
patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)

File "/usr/local/lib/python2.7/dist-packages/django/core/urlresolvers.py", line 274, in _get_urlconf_module
self._urlconf_module = import_module(self.urlconf_name)

File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)

File "/myproject/urls.py", line 6, in <module>
admin.autodiscover()

File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/__init__.py", line 26, in autodiscover
import_module('%s.admin' % app)

File "/usr/local/lib/python2.7/dist-packages/django/utils/importlib.py", line 35, in import_module
__import__(name)

File "/myproject/myapps/app/admin.py", line 61, in <module>
class CardAdminForm(forms.ModelForm):

File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py", line 205, in __new__
opts.exclude, opts.widgets, formfield_callback)

File "/usr/local/lib/python2.7/dist-packages/django/forms/models.py", line 159, in fields_for_model
formfield = f.formfield(**kwargs)

File "/usr/local/lib/python2.7/dist-packages/django/db/models/fields/related.py", line 913, in formfield
'queryset': self.rel.to._default_manager.using(db).complex_filter(self.rel.limit_choices_to),

AttributeError: 'str' object has no attribute '_default_manager'

Paquets et les versions

  • Avertissement: impossible de trouver svn emplacement pour pymssql==2.0.0b1-dev-20111019
  • Avertissement: impossible de trouver svn emplacement pour distribuer==0.6.24 dev-r0
  • Django==1.3.3
  • GnuPGInterface==0.3.2
  • Paysage-Client==12.05
  • PAM==0.4.2
  • PIL==1.1.7
  • Twisted-Core==11.1.0
  • apt-xapian-index==0.44
  • argparse==1.2.1
  • chardet==2.0.1
  • command-not-found==0.2.44
  • ## FIXME: impossible de trouver le svn URL dans dependency_links pour ce forfait: distribuer==0.6.24 dev-r0
  • django-debug-toolbar==0.9.4
  • django-rosetta==0.6.8
  • httplib2==0.7.2
  • iotop==0.4.4
  • keyring==0.7.1
  • sélecteur de langue==0.1
  • launchpadlib==1.9.12
  • lazr.restfulclient==0.12.0
  • lazr.uri==1.0.3
  • mercurial==2.0.2
  • oauth==1.0.1
  • psycopg2==2.4.5
  • pyOpenSSL==0.12
  • pycrypto==2.4.1
  • ## FIXME: impossible de trouver le svn URL dans dependency_links pour ce forfait:pymssql==2.0.0b1-dev-20111019
  • pyserial==2.5
  • python-apt==0.8.3ubuntu7
  • python-debian==0.1.21ubuntu1
  • reportlab==2.5
  • simplejson==2.3.2
  • ufw==0.31.1-1
  • wadllib==1.3.0
  • wsgiref==0.1.2
  • xlwt==0.7.4
  • zope.interface==3.6.1

Base De Données: Postgresql 9.1.5

CardAdmin et CardAdminForm:

class CardAdmin(admin.ModelAdmin):
form = CardAdminForm
raw_id_fields = ('cust', 'acc', 'vehicle', 'driver')
list_display = ('id', 'pan', 'name', 'expiry', 'created', 'modified')
list_filter = ('status', )
search_fields = ['id', 'pan']
admin.site.register(Card, CardAdmin)
class CardAdminForm(forms.ModelForm):
"""
A Form for Cards (Admin console)
"""
def __init__(self, *args, **kwargs):
super(CardAdminForm, self).__init__(*args, **kwargs)
self.fields['cust'].required = True
self.fields['acc'].required = True
self.fields['name'].required = True
self.fields['code'].widget = forms.PasswordInput()
self.fields['code'].max_length = 6
class Meta:
model = Card
fields = (
'cust',
'name',
'acc',
'no',
'code',
'type',
'status',
'address_1',
'address_2',
'zip',
'city',
'country',
'phone_no',
'expiry',
'vehicle',
'driver'
)
def save(self, commit=True):
# Save some additional data.
form_instance = super(CardAdminForm, self).save(commit=False)
cleaned_data = self.cleaned_data
form_instance.pan = '%s%s%s'\
% (
cleaned_data['acc'].iso.number,
cleaned_data['acc'].number,
cleaned_data['no']
)
if commit:
form_instance.save()
return form_instance
Pouvez-Vous écrire les paquets des versions utilisez-Vous? " pip --freeze peut le faire et s'il vous plaît écrivez-moi Moteur de Base de données et la Version. Contenu sur 'settings.py' serait bien aussi. Définition de CardAdmin et CardAdminForm classes sont nécessaires aussi
Je pense que j'ai modifié pour inclure tous vous avez besoin. Ce settings.py détails avez-vous besoin? Merci.
"/myproject/myapps/app/admin.py", ligne 61 de pointage.. ?

OriginalL'auteur chewynougat | 2012-09-17