Вопросы с тегами [django-rest-framework-gis]

0

голосов
0

ответ
21

Просмотры

Уменьшение количества запросов к списку элементов с такой же в линии изменяемого поля визуализации

В то время отображения таблицы элементов, если значение поля для X не определен, он отображается как элемент выбора. Django делает запрос для каждого выбора элемента, и они могут добавить и привести к задержкам в больших таблицах. Что такое лучший способ уменьшить количество запросов? views.py от rest_framework импорта рендереров из класса rest_framework.response импорта Ответ ItemViewSet (viewsets.ModelViewSet): QuerySet = models.Item.objects.select_related ( "bought_by") serializer_class = serializers.ItemSerializer filterset_fields = ( "bought_by") renderer_classes = [ renderers.JSONRenderer, renderers.BrowsableAPIRenderer, renderers.TemplateHTMLRenderer] защиту список (Self, запрос, * арг ** kwargs): QuerySet = self.filter_queryset (self.get_queryset ()), если request.accepted_renderer.format == "HTML" : пункты = я. HTML {% статическая нагрузка%} {% нагрузки rest_framework%} {%, если items_info%} {% csrf_token%} Имя Активный куплено {% для пункта в пунктах%} {{item.name}} {{item.active}} {% стиль render_field serializer.bought_by = стиль%} {% ENDFOR%} {%}% еще нет ничего, чтобы показать. {% ENDIF%} Если есть три элемента, один запрос каждый будет получить serializer.bought_by. Я думал, что Django / ФПИ будет просто повторно использовать значение, но это запрос для каждого цикла. Пытаясь пройти «сериализатор-купил-под»:. Self.get_serializer () bought_by в ответ я получаю AttributeError: объект «ItemSerializer» не имеет attribute'bought_by»Печать сериалайзера я вижу: >> > Печать (self.get_serializer ()) ItemSerializer (контекст = { 'запрос': 'Формат': Нет, 'Вид':}): URL = HyperlinkedIdentityField (имя_представления = 'MyApp: деталь-деталь') = имя CharField ( уникальный = True, max_length = 50) = активный BooleanField (требуется = False) bought_by = SlugRelatedField (allow_null = True, QuerySet =, требуется = False, slug_field = 'имя') есть ли способ, чтобы передать bought_by в шаблон? Или я должен использовать JS; оказывать поле формы вне цикла и клон / дублировать каким-то образом? --- Изменения --- По желанию Эндре в: models.py класса покупателя (models.Model): Имя = models.CharField (уникальный = True, max_length = 20) класса Item (models.Model): Имя = models.CharField (уникальный = True, max_length = 50) = активный models.BooleanField (по умолчанию = True) bought_by = models.ForeignKey (Покупатель, нуль = True, пусто = True,
silverstripes
1

голосов
1

ответ
709

Просмотры

check_object_permissions с CreateAPIView

CommentCreate является CreateAPIView используется, чтобы отправлять комментарии на другой модели «отчет». Мне нужно, чтобы заблокировать любой, кто не является автор доклада, или кто не в назначенной группе людей, которым разрешено оставлять комментарии, с помощью этой конечной точки для создания комментариев. Класс CommentCreate (generics.CreateAPIView): serializer_class = CommentSerializer QuerySet = Comment.objects.none () Защита check_object_permissions (самость, запрос, объект): если obj.report.creator = request.user: # также проверить, если request.user является в группе людей, которые могут комментировать поднять exceptions.PermissionDenied (деталь = «у вас нет разрешения») проблема я столкнулся в том, что check_object_permissions вызывается, но исключение не быть пойманным в любом месте, поэтому комментарий не будет размещен, как обычно ни на что. Что я здесь отсутствует?
denvaar
0

голосов
1

ответ
17

Просмотры

Обнаружен неизвестный тег «нагрузка».?

Я хочу добавить некоторые пользовательские-шаблонный tags.But, {% нагрузки userfilters%} => тег «нагрузка» не работает. settings.py # проект / settings.py ШАБЛОНЫ = [{ 'BACKEND': 'django.template.backends.jinja2.Jinja2', 'DIRS': [os.path.join (base_dir, 'HTML / jinja2'),] , 'APP_DIRS': true 'Options': { 'окружения': 'accountv1.jinja2.environment',},},] jinja2.py # проект / jinja2.py от django.templatetags.static импорта статического из django.urls импорт реверсивная из jinja2 импорта окружающей среды четкости среды (** опция): окр = Environment (** опции) env.globals.update ({ 'статическими': статические, 'URL': реверс,}) возвращает окр приложение / templatetags / userfilters ,
user10827542
1

голосов
1

ответ
678

Просмотры

Как искать из многих областей?

У меня есть пользовательский фильтр для моего режима просмотра: класс OrderFilter (django_filters.rest_framework.FilterSet): имя пользователя = django_filters.CharFilter (имя = 'user__username', lookup_expr = 'icontains') имя_клиент = django_filters.CharFilter (имя = 'user__first_name', lookup_expr = 'icontains') класс Мета: модель = Order исключает = [ 'рк'] И это работает, когда я отправить запрос, как это: HTTP: // LOCALHOST?: 8000 / заказов / имя пользователя = TestUser или HTTP: // локальный: 8000 / заказы /? имя_клиент = джон, но я хочу, чтобы создать только один запрос для поиска данных, содержащих строку поиска в имени пользователя, first_name и last_name. Как это сделать?
Nips
1

голосов
1

ответ
41

Просмотры

Уплотненные Отношения Serializer Rest Framework отображается неправильно

Я пытаюсь отобразить атрибуты в модели болезни и фактических данных модели, но атрибуты, которые отображаются на конце ссылки только те атрибуты, которые присутствуют в правиле модели. Models.py: - класс Rule (models.Model): болезнь = models.ForeignKey (болезнь, по умолчанию = 0, related_name = "DRules") доказательства = models.ForeignKey (Evidence, по умолчанию = 0, related_name = "ERules") measure_of_belief = models.PositiveIntegerField (\ help_text = "мера веры (в процентах), что болезнь присутствует дано это доказательство существует", \ по умолчанию = 0, валидаторы = [MinValueValidator (0), MaxValueValidator (100)]) measure_of_disbelief = модели. PositiveIntegerField (\ help_text = «мера неверия (в процентах), что болезнь присутствует дано свидетельство не существует», Там нет ошибки или сбоя, то значение от модели болезни и фактических данных модели просто не отображается. Вот результат
mutedeuphonies
0

голосов
2

ответ
11

Просмотры

как получить имя пользователя с маркером Джанго отдыха authetication?

Я использую Django Django = 2.1.7 и остальное рамочное djangorestframework = 3.9.2 Это мой URL для пути входа в систему ( «отдых-авторизация / Войти», включают в себя ( «rest_auth.urls»)), когда я ввожу имя пользователя и пароль, получил фишку от остальных API. Но я хочу, чтобы мой деталь пользователь как имя, идентификатор и т.д., чтобы показать в моих реагирующих компонентов. Пожалуйста, помогите мне, как достичь. Я видел много ответов на StackOverflow даже официальная документация не является описательным https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication
imsaiful
1

голосов
0

ответ
401

Просмотры

Не удалось отправить письмо активации с Джосера в Django Framework Rest

пытаюсь отправить письмо с кодом активации, когда пользователь зарегистрироваться. когда запрос поста называется содержание электронной почты отображается в консоли, но это не отправить электронную почту пользователя. Установка Джанго: EMAIL_USE_TLS = True EMAIL_HOST = 'smtp.gmail.com' EMAIL_HOST_USER = EMAIL_HOST_PASSWORD = EMAIL_PORT = 587 EMAIL_BACKEND = '' django.core.mail.backends.smtp.EmailBackend Джосера = { 'SET_PASSWORD_RETYPE': Правда, 'LOGOUT_ON_PASSWORD_CHANGE': Правда, 'PASSWORD_RESET_SHOW_EMAIL_NOT_FOUND': Правда, 'PASSWORD_RESET_CONFIRM_URL': '# / пароль / сброс / подтверждение / {UID} / {маркер}', 'ACTIVATION_URL': '# / активировать / {идентификатор пользователя} / {маркер}', «SEND_ACTIVATION_EMAIL «: Правда, 'сериализаторы': {}} PS: SMTP включена аккаунта Gmail с помощью https: //www.codingforentrepreneurs.
Bishnu Sharma
1

голосов
1

ответ
325

Просмотры

Аутентификация в Wordpress от Android WebView

В настоящее время я работаю над хобби проекта, который имеет 3 основных компонента: Android приложения, базируемый Django-отдых-основа бэкэнда, Wordpress FRONTEND Андроида приложение проверяет подлинность против REST API, а также поддерживает вход с Facebook. Есть некоторые разделы WP фронтэнда Я хотел бы интегрировать с помощью WebView Android, но некоторые особенностей в Wordpress требуют аутентификации пользователя. Первоначально я думал о добавлении пользователя в таблицу пользователей Wordpress, когда новый пользователь зарегистрирован через бэкэнд, а затем просто аутентифицировать с помощью Wordpress' JSON API и впрыснуть кук в WebView с JS. Но этот подход не будет работать, если пользователь зарегистрирован через Facebook из Android (так как нет никакого пароля можно использовать для проверки подлинности с помощью API JSON). То есть, другими словами, Мне нужно, чтобы проверить подлинность в Wordpress из WebView Android, а также поддержки Facebook логина и пользовательская аутентификации одновременно. Как я могу справиться с этим сценарием? Любые предложения будут очень признательны.
alxrcs
1

голосов
2

ответ
369

Просмотры

DRF тестирование модели Serializer - Джанго Restframework

Я проверяю мою модель Serializer в Джанго restframework с APITestCase. это моя структура: класс Usertest (APITestCase): Защиту test_userprofile_create (Я): пользователь = User.objects.create (имя пользователя = 'Асгар', пароль = '4411652A', email='[email protected]») Профиль = UserProfile.objects.create (FullName = 'asghariiiiii', PHONENUMBER = '9121345432', адрес = 'Беллы, пользователь = пользователь) user.user_profile = профиль клиента = APIClient () запрос = client.get (' / пользователь / создать / ') = данные UserCreateSerializer (пользователь, контекст = {' запрос ':. запрос}) данных URL = реверс (' пользователь создать ') response_create = client.post (URL, данные) на мой взгляд, разрешений, установленных для AllowAny. нет необходимости для входа в систему или force_authenticate. Данные = UserCreateSerializer (пользовательский контекст = { «запрос»: запрос}) данные AttributeError:. «HttpResponseNotFound» объект не имеет атрибута «build_absolute_uri», как вы можете увидеть сообщение об ошибке происходит от создания данных .first я попытался удалить контекст, но ошибка приходит с это название: AssertionError: HyperlinkedIdentityField требует запрос в контексте сериализатора. Добавить контекст = { «запрос»: запрос} при инстанцировании сериалайзера. нет необходимости для входа в систему или force_authenticate. Данные = UserCreateSerializer (пользовательский контекст = { «запрос»: запрос}) данные AttributeError:. «HttpResponseNotFound» объект не имеет атрибута «build_absolute_uri», как вы можете увидеть сообщение об ошибке происходит от создания данных .first я попытался удалить контекст, но ошибка приходит с это название: AssertionError: HyperlinkedIdentityField требует запрос в контексте сериализатора. Добавить контекст = { «запрос»: запрос} при инстанцировании сериалайзера. нет необходимости для входа в систему или force_authenticate. Данные = UserCreateSerializer (пользовательский контекст = { «запрос»: запрос}) данные AttributeError:. «HttpResponseNotFound» объект не имеет атрибута «build_absolute_uri», как вы можете увидеть сообщение об ошибке происходит от создания данных .first я попытался удалить контекст, но ошибка приходит с это название: AssertionError: HyperlinkedIdentityField требует запрос в контексте сериализатора. Добавить контекст = { «запрос»: запрос} при инстанцировании сериалайзера. HyperlinkedIdentityField требует запроса в контексте сериализатора. Добавить контекст = { «запрос»: запрос} при инстанцировании сериалайзера. HyperlinkedIdentityField требует запроса в контексте сериализатора. Добавить контекст = { «запрос»: запрос} при инстанцировании сериалайзера.
taghiss
1

голосов
0

ответ
398

Просмотры

VueJS аутентификации с Django REST Key

Я могу получить ключ после входа в систему через мой Django REST API, но мне интересно, как я должен хранить этот ключ. Я на самом деле не используя Django, но я думаю, что я должен хранить куки себя то или что-то. Я использую AXIOS для VueJS взаимодействовать с API. Я использую Джанго остальное авторизацию, чтобы получить маркер.
Florin
1

голосов
0

ответ
45

Просмотры

Остановка coreapi отображения API администратора документы

В настоящее время я документирование API я создал для приложения. Я использую встроенный в документации системы, которая поставляется с Django Framework Rest и coreapi (как описано здесь). Класс MyAPI (APIView): схема = ManualSchema (поля = [coreapi.Field (...), ...], описание = 'Опишите эту точку зрения') я создал URL для документации в urls.py для API приложение: url_patterns = [URL (г '^ Docs /', include_docs_urls ( 'My API Название')), ...] у меня есть проблема в том, что, когда я посещаю документацию я вижу админ API документы вместе с моим API Docs , Я попытался с помощью ответа на этот вопрос: REST_FRAMEWORK = { «DEFAULT_RENDERER_CLASSES»: ( «rest_framework.renderers.JSONRenderer»,)} Но админ документы все еще показывают вверх. Есть ли способ, чтобы скрыть администратор документы?
Matt Ellen
1

голосов
1

ответ
29

Просмотры

JQuery добавить дополнительные переменные в URL

Я думаю, что это проблема в веб-интерфейсе, и я не знаком с веб-интерфейсе. Таким образом, это может быть не лучший метод, предложения приветствуется. Мне нужно, чтобы получить некоторые данные из апи отдыха, разработанного с помощью Джанго-покой рамки и поместить его в поле ввода на форме. Таким образом, это код, функция getcharmids () {вар get_url = "HTTP: // локальный: 8000 / get_charm_ids /" + имя; # Имя я заявляю в шаблоне Джанго console.log ( «щелкнул»); $ .Ajax ({типа: 'GET', DATATYPE: "JSON", URL: get_url, CONTENTTYPE: "применение / х-WWW-форм-urlencoded, кодировка = UTF-8", принимают: "приложения / JSON", успех : функция (данные) {вар charm_input = document.getElementById ( 'id_charm_ids'); console.log (charm_input.value); charm_input.value = data.charm_ids;}}); }; Таким образом, это не вызвать URL, но с дополнительными параметрами. Он должен вызвать HTTP: // локальный: 8000 / get_charm_ids / Kasam09 Но звонки с / get_charm_ids / Shakti_02 обратный вызов = jQuery111009547658997639622_1518179689207 & _ = 1518179689208 Таким образом, из-за дополнительных параметров, мой бэкенд не может обработать этот запрос?. Что такое временное решение этой проблемы? Что такое правильный способ вызова APIs с помощью JQuery? Или есть еще один хороший метод? EDIT - Вот мой файл апи urls.py из django.conf.urls импорта URL с. просмотров импорта urlpatterns = [URL (г '^ get_data / (? P (. *?)) $', views.get_data), гиперссылка (г '^ get_charm_ids / (? P (. *?)) $', вид. get_charm_ids)] Вот мой views.py файл, @api_view ([ 'GET']) защиту get_data (запрос, VID): если request.method == 'GET': #here мой код возврата Response ({ 'данные ':' a1, b2, c3,
Luv33preet
1

голосов
0

ответ
234

Просмотры

Объединение таблиц с Джанго Rest Framework API

I just want to know how to take two related database entities and send the desired joined data back as a single json response. For instance, given the following files: models.py class Alpha(models.Model): alpha_id = models.AutoField(primary_key = True) data = models.CharField(max_length = 255, null = True) class Beta(models.Model): beta_id = models.AutoField(primary_key = True) alpha_fk = models.ForeignKey(Alpha, null = True, on_delete = models.CASCADE) data = models.CharField(max_length = 255, null = True) serializers.py class AlphaSerializer(serializers.ModelSerializer): class Meta: model = Alpha fields = ('alpha_id','data') class BetaSerializer(serializers.ModelSerializer): class Meta: model = Beta fields = ('beta_id', 'alpha_fk', 'data') views.py @csrf_exempt def AlphaDetailView(request, pk): try: modelObject = Alpha.objects.get(pk = pk) except Alpha.DoesNotExist: return HttpResponse(status = 404) if request.method == 'GET': serializer = AlphaSerializer(modelObject) return JsonResponse(serializer.data) elif request.method == 'PUT': data = JSONParser().parse(request) serializer = AlphaSerializer(modelObject, data = data) if serializer.is_valid(): serializer.save() return JsonResponse(serializer.data) return JsonResponse(serializer.errors, status = 400) elif request.method == 'PATCH': data = JSONParser().parse(request) serializer = AlphaSerializer(modelObject, data = data, partial = True) if serializer.is_valid(): serializer.save() return JsonResponse(serializer.data) return JsonResponse(serializer.errors, status = 400) elif request.method == 'DELETE': modelObject.delete() return HttpResponse(status = 204) @csrf_exempt def BetaDetailView(request, pk): try: modelObject = Beta.objects.get(pk = pk) except Beta.DoesNotExist: return HttpResponse(status = 404) if request.method == 'GET': serializer = BetaSerializer(modelObject) return JsonResponse(serializer.data) elif request.method == 'PUT': data = JSONParser().parse(request) serializer = BetaSerializer(modelObject, data = data) if serializer.is_valid(): serializer.save() return JsonResponse(serializer.data) return JsonResponse(serializer.errors, status = 400) elif request.method == 'PATCH': data = JSONParser().parse(request) serializer = BetaSerializer(modelObject, data = data, partial = True) if serializer.is_valid(): serializer.save() return JsonResponse(serializer.data) return JsonResponse(serializer.errors, status = 400) elif request.method == 'DELETE': modelObject.delete() return HttpResponse(status = 204) urls.py urlpatterns = [ url(r'^alpha/(?P[0-9]+)/$', AlphaDetailView), url(r'^beta/(?P[0-9]+)/$', BetaDetailView) ] When I do a GET request on Alpha, I would like to be able to also get all of the fields in Beta which are related by the foreign key, effectively simulating an SQL join. My coming here is in part a result of the fact that the DRF documentation I've found online seems very vague. Aside from digging through the source code, is there a place where I can go to see detailed information about the available objects and their built-in methods along with expected parameters and return types? All I've found is paragraph descriptions of what different objects do in a very general sense.
IslandNation
1

голосов
2

ответ
332

Просмотры

DRF 404 insetad JSON в HTML-страницы

Я хотел бы заменить по умолчанию Джанго 404 (и других в будущем) с ответом ФПИ, так же легко, как это возможно, только чтобы вернуться (стандартный ответ DRF): { «деталь»: «Не найден.» } Так что я положил этот код в моем файле url.py. от rest_framework.exceptions импорта NotFound из django.conf.urls импортирует handler404 handler404 = NotFound Когда я установил флаг отладки (в наборе Ture я Geting 500, когда установите его на Ложные 404, а в виде HTML. Я прочитал документ здесь:. http://www.django-rest-framework.org/api-guide/exceptions/, но если честно, я не знаю, как поставить это в реальности это кажется легко, но я почему-то не удалось реализовать это (выше код приходит образуют другие SO темы). Спасибо заранее
Piotr
1

голосов
1

ответ
407

Просмотры

Получить данные из двух таблиц с использованием внешнего ключа в Django

CASECADE) product_id = models.ForeignKey ( 'продукта', on_delete = models.SET_NULL, нуль = True, пусто = True) VENDOR_ID = models.ForeignKey ( 'Vendor', on_delete = models.SET_NULL, нуль = True, пустой = True) Защиту __str __ (самостоятельно): возврат self.vendor_id views.py класс VendorDetail (generics.RetrieveUpdateDestoryAPIView): QuerySet = Vendor.objects.all () serializer_class = VendorSerializer имя = 'Vendor-детали' Я хочу JSON ответ, как показано ниже. Кроме того, я хочу, чтобы поля, чтобы быть в том же порядке, как показано ниже: { "ID": 1, "имя": "группа-1" "пользователи": [{ "ID": 1, "электронная почта": «а @ gmail.com " "first_name": "myfirstname1", "last_name": "mylastname1"}, { "идентификатор": 2,"
Akshay Malhotra
1

голосов
0

ответ
92

Просмотры

Джанго аутентификации всегда возвращают None

Найдено много вопросов по этому поводу, однако, не смог найти чего-л помогает мне. Settings.py содержит Authentication Backend: AUTHENTICATION_BACKENDS = ( 'django.contrib.auth.backends.ModelBackend',) И аутентификации пользовательской модели: AUTH_USER_MODEL = 'users.User' модель User наследуется от класса AbstractUser: Класс пользователя (AbstractUser): А потом 3 типа пользователей наследуют от пользователя. Я зарегистрированный клиент: класс клиент (пользователь, models.Model): состояние = models.CharField (max_length = 1, по умолчанию = 'C', редактируемого = False) Когда я активировать пользователь по ссылке активации все в порядке. Клиент проверки подлинности пользователя. Однако, когда я просто пытаюсь войти с помощью логина и пароля Аутентификация всегда возвращать None: класс LoginView (APIView): Защиту пост (я, запрос): QS = User.objects.filter (Q (электронная почта = request.data.get ( 'пользователь «)) | Q (телефон = request.data. получить ( 'пользователь'))), если qs.exists ():. имя пользователя = qs.first () имя пользователя пароль = request.data.get ( 'пароль') пользователя = аутентификации (имя пользователя = имя пользователя, пароль = пароль), если пользователь Этого нет: Логин (запрос, пользователь) возвращает ответ (CMD (user.id), статус = status.HTTP_200_OK) возвращает ответ ({ 'ошибка': 'Неверный Логин / пароль'}, статус = status.HTTP_400_BAD_REQUEST) I «ве регистрируемые в достаточном количестве, которые возвращали желательные клиента, а также имя пользователя и пароль в порядке, но не аутентифицировать возвращает None. Я думаю, что, может быть, проблема заключается в том, что клиент не зарегистрирован должным образом. Это форма SignUp: класс ClientSignupForm (forms.ModelForm): класс Meta: модель = Client исключают = [ 'имя пользователя', '
1

голосов
0

ответ
59

Просмотры

Как использовать DRF авторизацию на Django просмотров без REST?

Я хотел бы использовать мои нынешние взгляды Django в другом проекте (который живет на другом домене), так что я буду нуждаться в подлинности маркеров. Можно ли использовать Django Rest Framework, который имеет хороший маркер системы аутентификации, для аутентификации пользователей на Django без REST взглядов? Я в настоящее время использую login_required декоратора, который не работает для токен аутентификации Django Framework Rest: от django.contrib.auth.decorators импортирует login_required из django.http импорта JsonResponse @login_required Защиту my_view (запрос): возвращение JsonResponse ({ «статус»: 'Хорошо'})
rodorgas
1

голосов
2

ответ
645

Просмотры

Django - DRF Delete/Retrieve/Patch Returns 404 { detail: “Not found” }

After intensive debugging for about 4-5 hours. I give up trying to find what's causing this, probably really simple, bug. Tried this with Update and Patch/Put Mixins, and didn't work as well. It is 100% because of the queryset, but I can't find the problem? Tried using .get() and everything else I could think of. My View is pretty straightforward: class RemoveModel3D(generics.DestroyAPIView): serializer_class = Model3DSerializer def get_queryset(self): user_pk = self.kwargs["pk"] return Model3D.objects.filter(owners__in=[user_pk]) P.S. That queryset is working perfectly fine with ListModelMixin. I read that List is for collections and Retrieve/Destroy/Update is for single model instance, but How do I get the queryset to be a single model instance? That I could not find anywhere EDIT: Adding serializer and model snippets related to the issue Serializers: class Model3DSerializer(serializers.ModelSerializer): User = get_user_model() commits = CommitSerializer(many=True, required=False, read_only=True) favorited_by = UserSerializer(many=True, required=False, read_only=True) date_uploaded = serializers.DateTimeField(read_only=True) owners = serializers.PrimaryKeyRelatedField(many=True, read_only=True) class Meta: model = Model3D fields = ( 'id', 'title', 'owners', 'description', 'date_uploaded', 'favorited_by', 'commits' ) Model: class Model3D(models.Model): title = models.CharField(max_length=64) # Many models many owners, seems reasonable to me owners = models.ManyToManyField(User, related_name='owners') description = models.TextField(null=True) date_uploaded = models.DateTimeField(auto_now_add=True) # Many models many people who like them. favorited_by = models.ManyToManyField(User, related_name='favorited_by') Views: class ListAllModels3D(generics.ListAPIView): serializer_class = Model3DSerializer def get_queryset(self): queryset = Model3D.objects.all() model_id = self.request.query_params.get('id', None) if model_id is not None: queryset = queryset.filter(pk=model_id) return queryset class RemoveModel3D(generics.DestroyAPIView): serializer_class = Model3DSerializer def get_queryset(self): queryset = Model3D.objects.all() model_id = self.request.query_params.get('id', None) if model_id is not None: queryset = queryset.filter(pk=model_id) return queryset class Models3D( mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView, ): serializer_class = Model3DSerializer def get_queryset(self): user_pk = self.kwargs["pk"] return Model3D.objects.filter(owners__in=[user_pk]) def get(self, request, *args, **kwargs): return self.list(request, *args, **kwargs) def post(self, request, *args, **kwargs): return self.create(request, *args, **kwargs) def perform_create(self, serializer): # FIXME: this is a bad way to set the value, but ... user_id = self.kwargs["pk"] serializer.validated_data['owners'] = [user_id] serializer.save()
Viktor Velev
1

голосов
1

ответ
168

Просмотры

Можно ли сгенерировать диаграмму классов / Архитектура схемы с использованием Django Framework Rest

Я работаю на существующий огромный Джанго 1.8 проекта, который использует покой рамку и имеет около 90 моделей (таблицы). Я хотел бы, чтобы создать диаграмму класса / архитектура диаграммы для таблиц. Есть ли автоматизированное средство для этого, что я могу использовать? Кураж помог мне создать документацию по API, и я стал поклонником Джанго-покой рамок уже.
cegprakash
1

голосов
1

ответ
33

Просмотры

Джанго Rest API пагинация Заселите же запись в нескольких странице

Я создал API с функцией постраничной в нем, его роде работу, но только странно, что это скажет я объявил только 10 запись будет отображаться на 1 страницу для нескольких страниц (например: 1-3) он заселить ту же запись и менее чем 10 запись, но когда я открываю 4-й странице, это заполнить следующая запись также меньше, чем 10, а то же самое произойдет, пока не откроется на 8-й странице, может кто-нибудь сказать мне, почему эта ошибка происходит. Heres мой API: класс ModelAFilterAPI (APIView): Защиту получить (я, запрос, project_id, search_type = "", формат = None): печать (search_type) search_type_list_split = search_type.split ( '_') search_type_list = список (карта (Int , search_type_list_split)) model_object = ModelA.objects.filter (проект = project_id, id__in = search_type_list) Paginator = Paginator (model_object, 10) = страница запроса. GET.get ( 'страница') попробуйте: model_object = paginator.page (страницы), за исключением PageNotAnInteger: # Если страница не является целым числом, поставить первую страницу. model_object = paginator.page (1), за исключением EmptyPage: # Если страница находится вне диапазона (например, 9999), поставить последнюю страницу результатов. model_object = paginator.page (paginator.num_pages) сериализатору = ModelASerializer (model_object, многие = True) возвращение Response (serializer.data)
M.Izzat
1

голосов
1

ответ
43

Просмотры

How do I make a partial update on a ManyToManyField? I also need it validated. Django Rest

I want to be able to partially-update instances through GET requests. urls.py urlpatterns=[ url(r'^classes/(?P\d+)/add_student/(?P\d+)', views.add_student), ] models.py class Class(models.Model): students = models.ManyToManyField('Student', related_name='classes') max_capacity = models.PositiveIntegerField() ... class Student(models.Model): ... The following does not work, but what I want is to be able to partially-update a class_ instance. I want to add a student to this Class instance. Also, I want the validate code in my serializer to reject the update if it is not good. views.py def add_student(request, pk, student_id): class_ = get_object_or_404(Class, id=pk) student = get_object_or_404(Student, id=student_id) class_.students.add(student) serializer = ClassSerializer( class_, data={'students': class_.students}, partial=True ) if serializer.is_valid(raise_exception=True): serializer.save() return redirect('class-detail', pk=pk) serializer.py class ClassSerializer(serializers.ModelSerializer): ... def validate(self, data): students = data['students'] max_capacity = data['max_capacity'] if len(students) > max_capacity: msg = 'This class is full' raise serializers.ValidationError(msg) return data Please help, I really don't know what to do. I have no idea where to place my codes. I would accept any revision or replacement of code
Bill Vergara
1

голосов
1

ответ
157

Просмотры

Many to Many model with a dropdown in Django Rest Framework?

Я пытаюсь создать многие ко многим отношения с моделью между ними, у меня есть модель клиента и модель зоны, каждый клиент может иметь доступ к различным зонам, и каждая зона может иметь несколько клиентов. Поэтому я создал модель под названием Access Permission, что сохраняет упомянутые отношения, и я хочу, чтобы показать селектор выпадающего в посте форме, которая показывает существующие клиент и зоны, или попросить Ид существующего объекта, вместо того чтобы показывать форму создавать новые. Это мои модели: класс зона (models.Model): имя = models.TextField () создано = models.DateTimeField (auto_now = True) Защита __str __ (Я): возвращение '% s' % (self.name) класса Client ( models.Model): имя = models.TextField () РОЖДЕНИЕ = models.DateField () создано = models.DateTimeField (auto_now = True) Защита __str __ (Я): возвращение "
Felipe
1

голосов
2

ответ
54

Просмотры

как использовать [PUT, UPDATE, DELETE] с несколькими поля?

В этом они получают фрагмент кода с помощью рк, но я должен получить по имени, идентификатору и автора. Так как писать функциональный вид @api_view ([ 'GET', 'PUT', 'DELETE']) Защиту snippet_detail (запрос, рк): попробуйте: сниппет = Snippet.objects.get (рк = рк), за исключением Snippet.DoesNotExist : возвращение отклика (статус = status.HTTP_404_NOT_FOUND), если request.method == 'GET': сериализатору = SnippetSerializer (фрагмент) возвращает ответ (serializer.data) Элиф request.method == 'PUT': сериализатора = SnippetSerializer (сниппета, данные = request.data), если serializer.is_valid (): serializer.save () возвращает ответ (serializer.data) возвращение отклика (serializer.errors, статус = status.HTTP_400_BAD_REQUEST) Элиф request.method == 'DELETE': фрагмент кода.
Loud JM
1

голосов
1

ответ
535

Просмотры

Django Rest Framework Create and Update user profile

Я строй проект DRF и включил проверку подлинности пользователя и регистрацию с помощью Джанго-allauth и Джанго-Rest-авт. Новый пользователь зарегистрирован, предоставляя имя пользователя, адрес электронной почты и пароль password1 2. Я хочу, чтобы создать профиль пользователя при создании пользователя, однако он должен был бы ввести все, что связано профиль при регистрации. Пользователь может редактировать этот профиль впоследствии, когда он хочет. Мой профиль модели: класс профиля (models.Model): пользователь = models.OneToOneField (Пользователь, пустой = True, on_delete = models.CASCADE,) имя = models.CharField (max_length = 50, пробел = True,) = возраст модели .IntegerField (пустой = True,) ... ... и в serializers.py у меня есть: класс ProfileSerializer (serializers.ModelSerializer): класс Meta: '__all__' модель = Профиль поля =
Thinker
1

голосов
0

ответ
42

Просмотры

Десериализации Json оленья кожа Validate

I'm using JavaScript in my Template to make a table. I decided to exchange the Data via JSON. Requesting the information and building the table works, but the the serializer wont validate the JSON data sent back to the server. I'm using Django REST Framework and JQuery. My view def get_CEMatrix(request, id): if request.method == 'GET': Cells = CellCE.objects.filter(project=id).order_by('id') serializer = CellCESerializer(Cells, many=True) return JsonResponse(serializer.data, safe=False) elif request.method == 'POST': data = JSONParser().parse(request) serializer = CellCESerializer(data=data, many = True) if serializer.is_valid(): serializer.save() return JsonResponse(serializer.data, safe=False) return JsonResponse(serializer.data, safe=False) my JS alert(JSON.stringify(myRows)); $.ajax({ "type": "POST", "dataType": "json", "url": get_CEMatrix, "data": JSON.stringify(myRows), "success": function(result) { alert("success of message to server and result is: " + result); } }); Serializer class CellCESerializer(serializers.ModelSerializer): row = serializers.StringRelatedField() val = serializers.ListField() class Meta: model = CellCE fields = ('row','val') for the model class CellCE(models.Model): project = models.ForeignKey('Project', on_delete=models.CASCADE, default='1') row = models.ForeignKey('Descriptor', on_delete=models.CASCADE) val = ArrayField(ArrayField(models.IntegerField(blank=True, default=0))) I've implemented a function to Display the exchanged JSON data within the Template. The Server Sends JSON like this: [ { "row":"THIS IS AMAZING", "val":[[139, 144,147],[0,0,0]] }, { "row":"HOLY FUCKING MOLY", "val":[[139, 144,147],[0,0,0]] }, { "row":"OMG", "val":[[139, 144,147],[0,0,0]] } ] The JSON sent to the server looks like this. [ { }, { "row":"THIS IS AMAZING", "val":"139 144 147 " }, { "row":"HOLY FUCKING MOLY", "val":"139 144 147 " }, { "row":"OMG", "val":"139 144 147 " } ] Does the serializer not work the way i think it does, or is the JSON format sent back simply not good enough. I am open for any suggestions. In case required, the entire JS // TABLE FUNCION $(document).ready(function(){ // CREATE DYNAMIC TABLE. var table = document.createElement("table"); // CREATE HTML TABLE HEADER ROW USING THE EXTRACTED HEADERS ABOVE. var tr = table.insertRow(-1); // TABLE HEADER for (var i = -1; i < descriptornamelist.length; i++) { var th = document.createElement("th"); if (i==-1) { th.innerHTML = "Descriptors"; tr.appendChild(th); } else { th.innerHTML = descriptornamelist[i]; tr.appendChild(th); } } // ADD JSON DATA TO THE TABLE AS ROWS. //First Load with 1 Complete set of Data $.getJSON( get_CEMatrix , function(result){ $.each(result, function(index, field){ tr = table.insertRow(-1); //First COL with Descriptornames var tabCell = tr.insertCell(0); tabCell.innerHTML = field["row"]; //Other COLs with Values for (var i = 0; i < descriptoridlist.length; i++) { var tabCell = tr.insertCell(-1); tabCell.contentEditable = true; //change to 1 vor actual values tabCell.innerHTML = field["val"][0][i]; //change to 1 vor actual values }; }); }); // FINALLY ADD THE NEWLY CREATED TABLE WITH JSON DATA TO A CONTAINER. var divContainer = document.getElementById("CETable"); divContainer.innerHTML = ""; divContainer.appendChild(table); }); //BUTTON FOR JSON TO SERVER $(".table_to_JSON").click(function(){ var myRows = []; // Loop through grabbing everything var $rows = $("tbody tr").each(function(index) { $cells = $(this).find("td"); myRows[index] = {}; $cells.each(function(cellIndex) { // Set the header text if( cellIndex == 0) { myRows[index]["row"] = $(this).text(); } if( cellIndex > 0) { if(myRows[index]["val"] === undefined){ myRows[index]["val"] =(""); } myRows[index]["val"] += $(this).text() + (" "); } }); }); alert(JSON.stringify(myRows)); $.ajax({ "type": "POST", "dataType": "json", "url": get_CEMatrix, "data": JSON.stringify(myRows), "success": function(result) { alert("success of message to server and result is: " + result); } }); });
Rubick
1

голосов
0

ответ
411

Просмотры

При использовании метода патча, я получаю сообщение об ошибке: «PATCH» не допускается

Я изучаю Rest рамки и сталкиваются с проблемой: подробно «:» Метод „PATCH“ не допускается. Я делаю все, что в соответствии с документацией. Я хочу, чтобы обновить только поля: first_name и пароль. просмотры класс UpdateUserSet (viewsets.ModelViewSet): permission_classes = (IsAuthenticated,) serializer_class = UserSerialize Защита partial_update (я, запрос, рк = None): возвращение отклик (статус = status.HTTP_201_CREATED) сериализовать класс UserSerialize (serializers.ModelSerializer): first_name = serializers.CharField (max_length = 30) пароль = serializers.CharField (write_only = True) класс Meta: модель = Пользовательские поля = ( 'first_name', 'пароль',) маршрутизаторы router.register (г '^ updateuser', views.UpdateUserSet , base_name = Пользователь) Что я делаю неправильно?
Denis Azi
1

голосов
1

ответ
61

Просмотры

Предотвращение одновременных запросов от одного пользователя в Джанго-покое рамках

Пользователи вызывают состояние гонки на критической обработке данных, нажав кнопку дважды случайно и спамить веб-сервер, чтобы получить больше очков. Я думал об использовании какого-то одного пользователя замка в начале обработки запроса, чтобы предотвратить повреждение данных как и перегрузку сервера. Проблема заключается в том, что обработка запросов распределяется между машинами.
rooholahmaleki
1

голосов
2

ответ
122

Просмотры

IOS + Django базы данных Логин Функция

Я действительно застрял, и мне нужна ваша помощь. Я работаю на моем веб-приложения и IOS. Я также Джанго, чтобы сохранить пользователей в базу данных. Войти функция уже работает на моем веб (HTML), но я действительно Дон't знаю, как создать функцию для IOS приложения (Swift). Прилагаю также экраны Api HTML и Swift кодекса. Теперь он работает только с Facebook. Пользователь может войти используя Facebook и заказать что-то с помощью IOS App. Я действительно хотел бы сделать то же самое, но при входе в функцию (без использования FB). Я надеюсь, что вы можете мне помочь. Я не знаю, как это сделать, и я много читал в Интернете. Я был бы очень рад, если ты можешь мне помочь. Пожалуйста помоги ! Огромное спасибо. Изображение 1 - HTML-Urls Изображение 2 - Apis Image 3 - Формы Изображение 4 - social_auth_piplines Изображение 5 - Модели Изображение 6 - Swift Apis
user9718948
1

голосов
0

ответ
451

Просмотры

Django Rest framework- getting total number of rows

Я хотел бы, чтобы вывести поле, которое подсчитывает количество в кандидат модели кандидата. Я в настоящее время использую следующий сериалайзер: класс CountCSerializer (serializers.ModelSerializer): user_count = serializers.SerializerMethodField () Класс Meta: модель = поля = Кандидат ( 'user_count') Защита get_user_count (я, объект): возвращение Candidat.objects. COUNT () и следующие API: класс CountCViewSet (ModelViewSet): QuerySet = Candidat.objects.all () serializer_class = CountCSerializer urls.py: router.register (r'CountC», CountCViewSet, base_name = 'пользователи-счета') модели .py: класс Кандидат (models.Model): имя = models.CharField (max_length = 50) LastName = models.CharField (max_length = 50) электронная почта = models.CharField (max_length = 50) тел = models.CharField (max_length = 50 , по умолчанию = 0) пароль = models.CharField (max_length = 50) цивилизованности = models.CharField (max_length = 50) РОЖДЕНИЕ = models.DateField (auto_now = False, auto_now_add = False) gouvernorate = models.CharField (max_length = 50) Защита __str__ (Я): возвращение "Кандидат: {}". формат (self.name) Но им ничего не получить! Любая помощь в этом вопросе была бы оценена.
M1rwen
1

голосов
0

ответ
32

Просмотры

Сжимая и распаковку изображения при передаче полезной нагрузки в рамках Джанго отдыха с использованием LZ4

У меня есть следующие модели ниже. Я хотел бы, чтобы сжать документ закачанный, а затем дать ссылку на распакованный файл он, когда запрос POST делаются. Как использовать LZ4 в основе зрения класса для сжатия или распаковки полезной нагрузки, которая содержит изображение? models.py класс EmployeeDocument (models.Model): "" "Модель, которая содержит документы сотрудников загружены. """ работник = models.ForeignKey (Сотрудник, related_name = "employee_docs", нуль = True, пустой = True) документ = модели .FileField (upload_to = 'Images /', по умолчанию = 'Images / None / Нет-IMG.jpg') подробности = models.TextField () защиту __str __ (Я): возвращение 'DOC -% s' % (self.employee. user.username)
pmutua
1

голосов
2

ответ
217

Просмотры

Джанго Rest Framework не работает с одного до одного отношения

У меня есть несколько наборов вид прекрасно работает, но те, с OneToOneField просто подняться ошибкой. Это странно, потому что я просто скопировал-вставил и изменить Эталонная модель несколько раз, и только те, которые имеют один к одному полю подняться ту же ошибку: Это модель: класс Provider (models.Model): компания = модели. OneToOneField ( 'Компания', on_delete = models.CASCADE, primary_key = True) provider_type = models.ForeignKey ( 'ProviderType', on_delete = models.PROTECT, related_name = 'type_providers') is_active = models.BooleanField (по умолчанию = True) Это сериализатор: класс ProviderSerializer (serializers.HyperlinkedModelSerializer): класс Meta: модель = models.Provider поле = ( 'компания', 'provider_type', 'is_active') Это набор вида: класс ProviderViewSet (viewsets. но для тех, кто один к одному полю. Он отлично работает даже для моделей с внешними ключами (один ко многим отношений). Это все отладочные: Внутренняя ошибка сервера: / общие / гостиницы / Traceback (самый последний вызов последнего): Файл «/Users/hugovillalobos/Documents/Code/IntellibookProject/IntellibookVenv/lib/python3.6/site-packages/django/ ядро / обработчики / exception.py "строка 35, в ответ на внутреннем = get_response (запрос) Файл" /Users/hugovillalobos/Documents/Code/IntellibookProject/IntellibookVenv/lib/python3.6/site-packages/django/core/handlers /base.py "строка 128, в ответ _get_response = self.process_exception_by_middleware (е, запрос) Файл" /Users/hugovillalobos/Documents/Code/IntellibookProject/IntellibookVenv/lib/python3.6/site-packages/django/core/ обработчики / base.py», строка 126, в get_fields поля [field_name] = field_class (** field_kwargs) Файл "/Users/hugovillalobos/Documents/Code/IntellibookProject/IntellibookVenv/lib/python3.6/site-packages/rest_framework/relations.py", строка 275, в __init__ не утверждают self.view_name это не None, 'требуется `view_name` аргумент. AssertionError: Параметр `view_name` аргумент является обязательным. [09 / Май / 2018 15:23:24] "GET / Общие / гостиницы / HTTP / 1.1" 500 132830
HuLu ViCa
1

голосов
0

ответ
34

Просмотры

DRF добавить данные в сериализатором из URL

Я пытаюсь создать новый объект в Viewset с помощью kwargs, что я получаю от URL. Я попытался прохождения тех, с контекстом, однако is_valid потребности называться первым в целях экономии. Я попытался с SerializerMethodField, но это блокируется требованиями М2М. Я пытаюсь использовать ModelSerializer, и я не хочу, чтобы сделать данные изменяемым. Защиту создавать (самостоятельно, запрос, * арг, ** kwargs): project_id = kwargs.get ( 'PROJECT_ID') startup_id = kwargs.get ( 'startup_id') self.user = request.user self.startup = Startup.objects. получить (рк = startup_id) self.project = Project.objects.get (рк = project_id) сериализатору = RatingSerializer (данные = request.data) serializer.is_valid (raise_exception = True) печати (serializer.data) self.perform_create (сериализатору) заголовки = self.get_success_headers (сериализатору. данные) возвращает ответ (serializer.data, статус = status.HTTP_201_CREATED, заголовки = заголовки) В моей модели у меня есть внешние ключи, а также m2m поле. рейтинг = IntegerField (по выбору = rating_choices) проект = ForeignKey (проект, on_delete = models.CASCADE) пользователь = ManyToManyField (Пользователь, related_name = 'пользователи') при запуске = ManyToManyField (Запуск, related_name = 'пользователей') Защита __str __ (самостоятельно): формат возвращать «Рейтинг {}». (self.rating) Мой вопрос заключается в том, как получить эти данные в сериализатором.
Paweł
1

голосов
1

ответ
78

Просмотры

Как вернуть пользовательский код статуса с помощью ФПИ?

создать не удастся, если уникальный = истина нарушается на этой модели, если это так, я ожидал бы, что 202 должен быть возвращен. Что я делаю неправильно? Является ли это потому, что уникальная = истинная ошибка на самом деле поимки во время проверки таким образом, создать () никогда на самом деле называется?
david
1

голосов
1

ответ
30

Просмотры

Check a field in model in generics.RetrieveDestroyAPIView

Я пишу остальное API. это мое мнение: класс OrderDeleteAPIView (generics.RetrieveDestroyAPIView): QuerySet = Order.objects.all () serializer_class = OrderDeleteSerializer # permission_classes = (OwnerCanManageOrReadOnly,) lookup_field = 'ID', и это его модель: класс Order (models.Model) : продукт = models.ForeignKey (Product) клиент = models.ForeignKey (Заказчик, нуль = True) жДЕМ ПРЕПАРАТ = 'WA' = 'PR' READY = 'RD' DELIVERED = STATUS_CHOICES 'DV' = ((ОЖИДАНИЕ, 'ожидание' ), (пример, 'подготовка'), (READY, 'готов'), (ПОСТАВКА 'доставлен')) состояние = models.CharField (max_length = 2, выбор = STATUS_CHOICES, по умолчанию = ЖДАТЬ,), а также: класс клиентов (models.Model):
Kosar Kazemi
1

голосов
0

ответ
47

Просмотры

DRF M2M Nested Serializer Field Incorrectly Typed as String

Whenever I attempt to deserialize a list of Technology objects while creating a TechnologyStack I receive the message: Field \"technologies\" of type \"String\" must not have a sub selection. I'm using djangorestframework==3.8.2. Anyone know what's causing this and/or a potential solution? Also, please note that I'm using the graphene-django library. But, it seems this problem is attributable to the drf serializer. class TechnologyProfile(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) name = models.CharField(max_length=100, unique=True) class Technology(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) profile = models.ForeignKey(TechnologyProfile, blank=True, null=True, on_delete=models.CASCADE) class Meta: verbose_name_plural = "technologies" class TechnologyStack(models.Model): technologies = models.ManyToManyField(Technology, related_name='technology_stacks') class TechnologyProfileSerializer(serializers.ModelSerializer): user_id = RelayIdField() name = serializers.CharField() class Meta: model = TechnologyProfile fields = ('id', 'name', 'user_id') class TechnologySerializer(serializers.ModelSerializer): user_id = RelayIdField() profile = TechnologyProfileSerializer(many=False) class Meta: model = Technology fields = '__all__' class TechnologyStackSerializer(serializers.ModelSerializer): technologies = TechnologySerializer(many=True) class Meta: model = TechnologyStack read_only_fields = ('id',) fields = '__all__'
lgants
1

голосов
1

ответ
286

Просмотры

Nested Serializer for Many to Many

I am new to Python and Django. I am creating api using Django-Rest-Framework I want to serializer data that can accept json in below format: { "ingredients": ["Sugar","Egg"], "name": "Cake", "description": "Dinner Food", "directions": "direction1" } However I am able to persist data in db with below format: { "ingredients": [{"name":"Cake"},{"name":"Egg"}], "name": "Rice", "description": "Dinner Food", "directions": "direction1" } I am not sure how can I convert dictionary in to the set field. I am aware of List field and list serialiser but not sure how to use them. Is it possible to do this using model serialiser? Serializer.py class IngredientSerializer(serializers.ModelSerializer): class Meta: model = Ingredient fields = '__all__' class RecipeSerializer(serializers.ModelSerializer): ingredients = IngredientSerializer(many=True) class Meta: model = Recipe fields = '__all__' def create(self, validated_data): ingredients_data = validated_data.pop('ingredients') print(ingredients_data) recipe = Recipe.objects.create(**validated_data) for ingredient in ingredients_data: ingredient, created = Ingredient.objects.get_or_create(name=ingredient['name']) recipe.ingredients.add(ingredient) return recipe Model.py class Ingredient(models.Model): name = models.CharField(max_length=100) def __str__(self): return self.name class Recipe(models.Model): name = models.CharField(max_length=100) description = models.TextField(blank=True, null=True) directions = models.TextField() ingredients = models.ManyToManyField(Ingredient) def __str__(self): return self.name view.py class RecipieView(viewsets.ModelViewSet): queryset = Recipe.objects.all() serializer_class = RecipeSerializer class IngredientView(viewsets.ModelViewSet): queryset = Ingredient.objects.all() serializer_class = IngredientSerializer
G. P
1

голосов
0

ответ
44

Просмотры

Разговор о часовом поясе в Django, когда магазин в базе данных MySQL

Я создал эти данные с помощью API моего проекта Django / Джанго-Rest-Framework. Я с использованием базы данных MySQL. но есть проблема, в базе данных, часовой пояс UTC, и мой часовой пояс +8 (время Пекин) часовой пояс. но когда я запрашиваю из данных, это все еще время UTC. Как стандартизировать этот часовой пояс? Я предполагаю Есть два способа сделать это, когда хранить данные, часовой пояс устанавливается на +8. когда запрос из данных, время преобразования до +8 часового пояса. Но и я не знаю, как реализовать, кто может сказать мне, что это лучшее решение? мои конфигурации в settings.py находятся ниже: LANGUAGE_CODE = 'ж-CN' TIME_ZONE = 'Азия / Шанхай' USE_I18N = True USE_L10N = True USE_TZ = True
qg_java_17137
1

голосов
1

ответ
151

Просмотры

I want to get the url of a ForeignKey in Django Rest Framework

I have a HyperlinkedModelSerializer of a model with a ForeignKey, and I want to return the hyperlink to the instance referenced in that field, but I get the whole object nested in the json. These are my models: class Hotel(models.Model): ONE_STAR = '*' TWO_STARS = '**' THREE_STARS = '***' FOUR_STARS = '****' FIVE_STARS = '****' GRAND_TOURISM = 'GRAND_TOURISM' NA = 'NA' SPECIAL = 'SPECIAL' ECO = 'ECO' BOUTIQUE = 'BOUTIQUE' HOTEL_CATEGORY_CHOICES = ( (ONE_STAR, _('*')), (TWO_STARS, _('**')), (THREE_STARS, _('***')), (FOUR_STARS, _('****')), (FIVE_STARS, _('*****')), (GRAND_TOURISM, _('Grand Tourism')), (NA, _('NA')), (SPECIAL, _('Special')), (ECO, _('Eco-Hotel')), (BOUTIQUE, _('Boutique-Hotel')) ) company = models.OneToOneField(Company, on_delete=models.CASCADE, primary_key=True, verbose_name=_('Company')) code = models.CharField(max_length=10, verbose_name=_('Code')) city = models.ForeignKey(City, on_delete=models.PROTECT, related_name='hotels', verbose_name=_('City')) category = models.CharField(max_length=20, choices=HOTEL_CATEGORY_CHOICES, verbose_name=_('Category')) capacity = models.IntegerField(verbose_name=_('Capacity')) position = models.DecimalField(max_digits=11, decimal_places=2, default=0.00, verbose_name=_('Position')) in_pickup = models.BooleanField(default=False, verbose_name=_('In pickup?')) is_active = models.BooleanField(default=True, verbose_name=_('Is active?')) class Meta: verbose_name = _('Hotel') verbose_name_plural = _('Hotels') def __str__(self): return self.company.name class Company(models.Model): name = models.CharField(max_length=40, verbose_name=_('Name')) legal_name = models.CharField(max_length=100, null=True, blank=True, verbose_name=_('Legal name')) tax_id = models.CharField(max_length=12, null=True, blank=True, verbose_name=_('Tax ID')) url = models.URLField(null=True, blank=True, verbose_name=_('URL')) address = models.TextField(max_length=400, null=True, blank=True, verbose_name=_('Address')) class Meta: verbose_name = _('Company') verbose_name_plural = _('Companies') def __str__(self): return "[{}]{}".format(self.id, self.name) This is my serializer: class HotelProductsSerializer(serializers.HyperlinkedModelSerializer): company = CompanySerializer() products = serializers.SerializerMethodField() def get_products(self, instance): queryset = [product for product in instance.company.products.all()] return ProductSerializer(queryset, many=True, context=self.context).data class Meta: model = models.Hotel fields = ('company', 'products') This is my ViewSet: class HotelProductsViewSet(viewsets.ModelViewSet): permission_classes = (permissions.IsAuthenticated,) queryset = models.Hotel.objects.all() serializer_class = serializers.HotelProductsSerializer Everything works fine, but the field company results in a nested Company object and I would like to get an hyperlink to the object instead. Thanks for your help.
HuLu ViCa
1

голосов
0

ответ
57

Просмотры

Расширение Джанго-oscarapi API ROOT для пользовательского класса API

У меня есть приложение Джанго Оскаром и я использую Джанго-oscarapi для моих пользовательских интерфейсов. Некоторые вещи пропали без вести из oscarapi как категории и продвижение по службе, но я был в состоянии использовать Джанго-restframework создать категорию API, но вызов я обращенный в том, как добавить его в API-ROOT. Это мой код для визуализации категории customapi класса класса сериализатору CategorySerializer (serializers.ModelSerializer): класс Meta: модель = Категория поля = ( «ID», «numchild», «имя», «Описание», «изображение», «тихоход» ) Просмотров класс CategoryList (generics.ListAPIView): QuerySet = Category.objects.all () serializer_class = CategorySerializer класс CategoryDetail (generics.RetrieveAPIView): QuerySet = Category.objects.all () serializer_class = CategorySerializer customapi / URLs.
King
1

голосов
0

ответ
161

Просмотры

ImageField устанавливается в нуль после прохождения через сериализатор для профиля обновления | DRF | Django Framework Rest

Я пытаюсь обновить изображение профиля пользователя. Профиль пользователя в настоящее время создается автоматически на созданный пользователь. В это время по умолчанию аватар установлен. Я использую маркер аутентификации Авторизация: Токен a877b60afeb45e1ada12e10ecf4d0c8065b15569 Но при попытке обновить request.data serilizer.data { 'profile_image': Нет, 'date_of_birth': '1990-05-02'} Models.py @deconstructible класс UploadToPathAndRename (объект) : Защита __init __ (я, путь): self.sub_path = путь защиту __call __ (самоощущение, экземпляр, имя файла): внутр = filename.split ( '') [- 1] # прибудет имя файл, если instance.pk: имя_файл = «{ .} {}». формат (instance.pk, доб) остальное: # Установить имя файла, как случайная строка файла = '{} {}' формат (uuid4 () гекс,... статус = status.HTTP_400_BAD_REQUEST) Пожалуйста, предложите что делать? Спасибо
Deepankar

Просмотр дополнительных вопросов