2017-06-23 26 views
-1

我試圖通過模型來保存它具有通過Django的休息框架下列屬性AttributeError的 - 對象有沒有屬性「創造」

發送POST時(我試圖創建一個新的實例),我收到以下錯誤:

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

任何想法,我在做什麼錯誤?

有問題的,通過模型是:

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 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 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

相關問題