У меня есть проект Django Rest Framework. Я пытаюсь создать набор представлений, который переопределяет метод создания по умолчанию для ModelViewSet. Прямо сейчас я собираю все данные, которые мне нужно получить из запроса POSt и аргументов URL. Я пытаюсь сохранить их в объекте данных, а затем создать новый объект в базе данных на основе того же объекта данных.
Все данные верны и настроены в объекте. Как я могу сделать объект пригодным для жизни. Я получаю сообщение об ошибке и думаю, что оно исходит от того, когда я пытаюсь сохранить. Я не уверен, хотя ....
Model View Set - метод создания:
@permission_classes((IsAuthenticated))
def create(self, request, *args, **kwargs):
namespace = self.kwargs.get('namespace', None)
path = self.kwargs.get('path', None)
print(request.user)
print(request.POST.get('version'))
print(request.POST.get('namespace'))
print(request.POST.get('path'))
print(request.POST.get('value'))
print(request.user.id)
if namespace is None and path is None:
return super().create(request)
if namespace and path is None:
data = {
"person":request.user,
'version':request.Post.get('version'),
'namespace':namespace,
'path':request.Post.get('path'),
'value':request.Post.get('value'),
'user_id':request.user.id,
}
return super().create(data)
if namespace and path:
data = {
"person":self.request.user,
'version':self.request.Post.get('version'),
'namespace':namespace,
'path':path,
'value':self.request.Post.get('value'),
'user_id':self.request.user.id,
}
return super().create(data)
Модель:
from django.db import models
from django.contrib.auth.models import User
from owf_framework.people.models import Person
class Preference(models.Model):
id = models.BigAutoField(primary_key=True, null=False)
version = models.BigIntegerField(default=1, null=False)
path = models.CharField(max_length=200, null=False)
namespace = models.CharField(max_length=200, null=False)
value = models.TextField(null=False)
user_id = models.BigIntegerField(null=False, default=1)
person = models.ForeignKey(User, on_delete=models.CASCADE)
def __str__(self):
return self.namespace
class Meta:
db_table = 'preference'
Вот ошибка:
AttributeError at /api/v2/preferences/namespace1/
'Request' object has no attribute 'Post'
Request Method: POST
Request URL: http://127.0.0.1:8000/api/v2/preferences/namespace1/
Django Version: 2.2.1
Exception Type: AttributeError
Exception Value:
'Request' object has no attribute 'Post'
Exception Location: C:\Users\jandali\AppData\Local\Programs\Python\Python37-32\lib\site-packages\rest_framework\request.py in __getattr__, line 414
Python Executable: C:\Users\jandali\AppData\Local\Programs\Python\Python37-32\python.exe
Python Version: 3.7.3
Python Path:
['C:\\Users\\jandali\\desktop\\ozone-backend\\ozone-framework-python-server',
'C:\\Users\\jandali\\AppData\\Local\\Programs\\Python\\Python37-32\\python37.zip',
'C:\\Users\\jandali\\AppData\\Local\\Programs\\Python\\Python37-32\\DLLs',
'C:\\Users\\jandali\\AppData\\Local\\Programs\\Python\\Python37-32\\lib',
'C:\\Users\\jandali\\AppData\\Local\\Programs\\Python\\Python37-32',
'C:\\Users\\jandali\\AppData\\Roaming\\Python\\Python37\\site-packages',
'C:\\Users\\jandali\\AppData\\Local\\Programs\\Python\\Python37-32\\lib\\site-packages']
Server time: Wed, 10 Jul 2019 04:22:02 +0000
Traceback Switch to copy-and-paste view
C:\Users\jandali\AppData\Local\Programs\Python\Python37-32\lib\site-packages\rest_framework\request.py in __getattr__
return getattr(self._request, attr) …
▶ Local vars
During handling of the above exception ('WSGIRequest' object has no attribute 'Post'), another exception occurred:
C:\Users\jandali\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\exception.py in inner
response = get_response(request) …
▶ Local vars
C:\Users\jandali\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py in _get_response
response = self.process_exception_by_middleware(e, request) …
▶ Local vars
C:\Users\jandali\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\core\handlers\base.py in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs) …
▶ Local vars
C:\Users\jandali\AppData\Local\Programs\Python\Python37-32\lib\site-packages\django\views\decorators\csrf.py in wrapped_view
return view_func(*args, **kwargs) …
▶ Local vars
C:\Users\jandali\AppData\Local\Programs\Python\Python37-32\lib\site-packages\rest_framework\viewsets.py in view
return self.dispatch(request, *args, **kwargs) …
▶ Local vars
C:\Users\jandali\AppData\Local\Programs\Python\Python37-32\lib\site-packages\rest_framework\views.py in dispatch
response = self.handle_exception(exc) …
▶ Local vars
C:\Users\jandali\AppData\Local\Programs\Python\Python37-32\lib\site-packages\rest_framework\views.py in handle_exception
self.raise_uncaught_exception(exc) …
▶ Local vars
C:\Users\jandali\AppData\Local\Programs\Python\Python37-32\lib\site-packages\rest_framework\views.py in dispatch
response = handler(request, *args, **kwargs) …
▶ Local vars
C:\Users\jandali\desktop\ozone-backend\ozone-framework-python-server\owf_framework\preferences\views.py in create
'version':request.Post.get('version'), …
▶ Local vars
C:\Users\jandali\AppData\Local\Programs\Python\Python37-32\lib\site-packages\rest_framework\request.py in __getattr__
return self.__getattribute__(attr)