2016-05-12 10 views
1

私はDjangoの初心者です。ImportError: cannot import name simplejsonエラーが発生しました。 Here、誰かがsimplejsonの代わりにjsonをインポートするためにextdirectのproviders.pyを更新するよう提案しましたが、これを行う方法をネットサーフィンして長時間のことを考えていないので、extdirectが何であるか把握できません。最終的には、私の目標は、ORMクエリ結果セットをjsonにしてクライアント側に渡すことです。Django - ImportError:name simplejsonをインポートできません

from django.core import serializers 

vendors_json = AgreementVendors.objects.select_related('agreement_unique').all() 
return serializers.serialize('json', [x.agreement_unique for x in vendors_json]) 

モデル::

class AgreementUnique(models.Model): 
    agreement_number = models.CharField(max_length=45, blank=True, null=True) 
    sign_date = models.DateTimeField(default=timezone.now) 
    cities = models.ForeignKey('address.Cities', on_delete=models.CASCADE) 
    sale_point = models.ForeignKey('legal_entity.SalePoint', on_delete=models.CASCADE) 
    sale_point_representative = models.ForeignKey('employee.Employees', on_delete=models.CASCADE) 
    partner_base = models.ForeignKey('PartnershipBase', on_delete=models.CASCADE) 
    agreement_from = models.DateField() 
    agreement_to = models.DateField() 
    blacknwhite = models.NullBooleanField() 
    prolongable = models.NullBooleanField() 

    class Meta: 
     managed = False 
     db_table = 'agreement_unique' 

    def __unicode__(self): 
     try: 
      return smart_unicode(AgreementEmployees.objects.get(agreement_unique=self.id).person_unique) 
     except AgreementEmployees.DoesNotExist: 
      return smart_unicode(self.agreement_number) 

class AgreementVendors(models.Model): 
    agreement_unique = models.ForeignKey(AgreementUnique, on_delete=models.CASCADE) 
    vendors = models.ForeignKey('vendor.Vendors', on_delete=models.CASCADE) 
    return_percentage = models.FloatField() 
    payment_method = models.ForeignKey('additional.PaymentMethod', on_delete=models.CASCADE) 
    vendor_representative = models.ForeignKey('person.PersonUnique', on_delete=models.CASCADE) 
    days_of_payment = models.IntegerField() 

    class Meta: 
     managed = False 
     db_table = 'agreement_vendors'   

    def __unicode__(self): 
     return smart_unicode(self.vendors) 

トレースバック:また

Traceback (most recent call last): 
    File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 148, in get_response 
    response = self.process_exception_by_middleware(e, request) 
    File "C:\Python27\lib\site-packages\django\core\handlers\base.py", line 146, in get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "C:\Users\edgar\Desktop\Project\djprj\vendor\views.py", line 153, in create_new_vendor_agreement 
    return serializers.serialize('json', [x.agreement_unique for x in vendors_json]) 
    File "C:\Python27\lib\site-packages\django\core\serializers\__init__.py", line 128, in serialize 
    s = get_serializer(format)() 
    File "C:\Python27\lib\site-packages\django\core\serializers\__init__.py", line 51, in __call__ 
    raise self.exception 
ImportError: cannot import name simplejson 

が、私が渡って来ることができないという奇妙であるここで

コードですCtrl + Fでプロジェクト全体を検索しようとすると、シンプルジーンが1回発生する

+0

あなたはどのバージョンのDjangoを使用していますか? – Alasdair

+0

これはDjango 1.9 –

+1

Djangoのアップグレードが失敗した可能性があります。 Djangoは 'simplejson'を長年使っていません。 'C:¥Python27¥lib¥site-packages¥django¥core¥serializers¥json.py'をチェックし、' django.utils import simplejson'の行が含まれているかどうか確認できますか? – Alasdair

答えて

1

チェック

SERIALIZATION_MODULES 

があなたのsettings.py内にある場合。デフォルトのjsonシリアライザをオーバーライドできます。

+0

さて、それは実際には –

+0

です。SERIALIZATION_MODULES = { 'json': 'wadofstuff.django.serializers.json' } –

+1

これはあなたの犯罪者です。 – Irvan

関連する問題