Объект Currencysys не повторяется

У меня проблема с моей моделью и сериализацией, я выполняю внутреннее соединение двух таблиц следующим образом:

# file views.py from Wallet
class WalletBalances(generics.ListAPIView):
      serializer_class = WalletSerializer

    def get_object(self, current_user):

        return Wallet.objects.filter(currencysys__id=F('currencysys_id'), 
                                 user_id=current_user)


    def get(self, request, format=None):
        current_user = request.user

        list_balances = self.get_object(current_user.id)
        serializer = self.serializer_class(list_balances, many=True)
        get_data = serializer.data

        return JsonResponse({'data': get_data}, safe=False, 
                              status=status.HTTP_200_OK)

ошибка показывает мне = "объект CurrencySys не повторяется"

мой файловый кошелек / сериализация

from other_project.serializers import CurrencySysSerializer

class WalletSerializer(serializers.ModelSerializer):
      # currencysys = CurrencySysSerializer(many=True)
      currencysys = serializers.StringRelatedField(many=True)

     class Meta:
         model = Wallet
         fields = '__all__'

мои модели:

# Currency / models.py
class CurrencySys(models.Model):
      currency_symbol = models.CharField(max_length=45, blank=True)
      currency_name = models.CharField(max_length=45, blank=True)
      currency_status = models.BooleanField(blank=True)
      currency_crypto = models.BooleanField(blank=True)

# wallet / models.py
class Wallet(models.Model):
      addresskey = models.CharField(max_length=40, blank=True)
      name_wallet = models.CharField(max_length=45, blank=True)
      currencysys = models.ForeignKey(CurrencySys, 
                                  on_delete=models.CASCADE)
      user = models.ForeignKey(User, on_delete=models.CASCADE)

зачем показывать мне эту ошибку и как исправить эту проблему, пожалуйста, помогите мне

Спасибо за внимание.

Что означает CurrencySys, в частности, что означает часть Sys? Почему вы ставите перед атрибутами класса CurrencySys префикс currency_? Это ужасная практика. Django сделает их внутренним префиксом. Теперь у вас есть совершенно беспорядочные имена столбцов в вашей базе данных.

cezar 31.07.2018 16:16

привет, CurrencySys - это просто имя, это была ошибка типа, мой класс - Currencysys, извините за путаницу.

Angel Omar Rojas Pacheco 31.07.2018 16:36
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
459
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

currencysys - это отдельный объект внешнего ключа. Таким образом, для этого вам не нужен аргумент many=True:

class WalletSerializer(serializers.ModelSerializer):
      # currencysys = CurrencySysSerializer(many=True)
      currencysys = serializers.StringRelatedField()

     class Meta:
         model = Wallet
         fields = '__all__'

спасибо, правильно, я решил свою проблему, но просто покажите мне поля таблицы кошелька, а не другие поля Currencysys, пожалуйста, как показать все данные, такие как «выберите * из ....», пожалуйста

Angel Omar Rojas Pacheco 31.07.2018 16:39

@AngelOmarRojasPacheco В этом случае вам нужно удалить строку currencysys = serializers.StringRelatedField() и добавить depth=1 в мета. Подробности здесь: django-rest-framework.org/api-guide/serializers/…

neverwalkaloner 31.07.2018 16:42

Другие вопросы по теме