Я использую Django ..Ожидаемый вид называться с аргументом URL ключевого слова имени рк
Вот мои просмотров
class SettingsValues(generics.ListAPIView):
serializer_class = SettingsSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def get_queryset(self):
queryset = Settings.objects.all()
queryset = queryset.filter(user=self.request.user.id)
return queryset
class SettingsValuesUpdate(generics.UpdateAPIView):
queryset = Settings.objects.all()
serializer_class = SettingsSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
def perform_update(self, serializer):
serializer.save(user=self.request.user.id)
Вот моя модель
class Settings(models.Model):
user = models.OneToOneField('auth.User', related_name='settings', on_delete=models.CASCADE)
boolean1 = models.BooleanField(default=False)
boolean2 = models.BooleanField(default=False)
boolean3 = models.BooleanField(default=False)
string1 = models.CharField(max_length=100, default='No description')
Мой serializer
class SettingsSerializer(serializers.ModelSerializer):
class Meta:
model = Settings
fields = ('id', 'boolean1', 'boolean2', 'boolean3', 'string1')
class UserSerializer(serializers.ModelSerializer):
class Meta:
model = User
fields = ('id', 'username', 'email', 'password' ,'settings', 'image')
extra_kwargs = {'password': {'write_only': True}}
Моих URLs
url(r'^settings/?$', views.SettingsValues.as_view()),
url(r'^updsettings/?$', views.SettingsValuesUpdate.as_view()),
Я использую Угловые 2 или почтальон приложение не имеет значения .. Когда я вернуть настройки он работает нормально. но когда я пытаюсь обновить пользовательские настройки (PUT), он показывает ошибку
Ожидаемый просмотр SettingsValuesУдалить, чтобы вызываться с аргументом ключевого слова URL с именем «pk». Исправьте URL conf или установите атрибут .lookup_field
на вид правильно
Любая идея?
EDIT
йота ответ Виней Кумар мой взгляд
class SettingsValuesUpdate(viewsets.ModelViewSet):
queryset = Settings.objects.all()
serializer_class = SettingsSerializer
permission_classes = (permissions.IsAuthenticatedOrReadOnly,)
@detail_route(methods='PUT')
def perform_update(self, serializer):
serializer.save(user=self.request.user.id)
но есть ошибка еще что { "деталь": "Метод \" PUT \»не допускается. "}
где можно добавить это? –
в файле urls.py. –
показывает ошибку TypeError: as_view() принимает ровно 1 аргумент (3 данных) –