2017-06-23 15 views
-1

「を作成」を持っていないはAttributeError - オブジェクトは、属性私はジャンゴ・静止フレームワークを経由して、以下の属性を持つモデルを通じて保存しようとしている

POSTを送信するときに(私は新しいインスタンスを作成しようとしています)、私は次のエラーを取得する:私が間違ってやっているのよう

AttributeError at /api/organisation/provider/ 'EnabledExternalProvider' object has no attribute 'create'

任意のアイデア?

問題の貫通モデルは次のとおりです。

class EnabledExternalProvider(mixins.RetrieveModelMixin, mixins.UpdateModelMixin,generics.GenericAPIView): 
    serializer_class = ConnectedServiceSerializer 

def get_queryset(self): 
    return EnabledExternalProvider.objects.filter(organisation=self.request.user.organisation_id) 

def get_object(self): 
    queryset = self.filter_queryset(self.get_queryset()) 
    # make sure to catch 404's below 
    obj = queryset.get(organisation=self.request.user.organisation_id) 
    self.check_object_permissions(self.request, obj) 
    return obj 

def get(self, request, *args, **kwargs): 
    return self.retrieve(request, *args, **kwargs) 

def post(self, request, *args, **kwargs): 
    return self.create(request, *args, **kwargs) 

と私のシリアライザは、次のとおりです:

class EnabledExternalProvider(models.Model): 
    provider = models.ForeignKey(ExternalProvider, related_name='associatedProvider') 
    organisation = models.ForeignKey(Organisation, related_name='associatedOrg') 
    enabled = models.BooleanField(default=True) 
    tenantIdentifier = models.CharField('Tenant identifer for organisation', max_length = 128, null=True, blank=True) 
    def __str__(self): 
     return self.provider + '-' + self.organisation 

私の見解である私は、次を掲示しています

class ConnectedServiceSerializer(serializers.ModelSerializer): 
    provider=ExternalProviderSerializer(read_only=True) 
    organisation=OrganisationDetailSerializer(read_only=True) 
    class Meta: 
     model = EnabledExternalProvider 
     fields = ('organisation', 'enabled', 'tenantIdentifier') 
     read_only_fields = ('organisation', 'provider') 

{"provider":"1","tenantIdentifier":"9f0e40fe-3d6d-4172-9015-4298684a9ad2","enabled":true} 

答えて

1

ビューは定義されていないか、またはビューを持つクラスから継承されていないため、そのメソッドはありません。あなたのmixinは検索と更新を提供しますが、作成はできません。

継承にmixins.CreateModelMixinを追加できますが、現時点ではViewSetを実際に使用する必要があります。

+0

ダニエルに感謝します。それはそれだった。私はViewSetsについても見ていきます。 – AndrewO

関連する問題