Проблемы с извлечением данных из базы данных django и их тестированием

Очень извиняюсь, но я полный новичок в Django и Python. Я пытаюсь вытащить некоторые данные из базы данных, чтобы я мог утверждать против него в фазе тестирования, но у меня проблемы с пониманием того, как получить данные из модели. Любая помощь будет оценена по достоинству.

Мой код:

Models.py

class CurrentAccountState(AccountState):
    enable_personal_profile = models.BooleanField(default=False)


class CurrentAccountSetting(TimestampedModel):
    ACCOUNT_SEND_TO_OPTIONS = (
        ("buyer", _("Receipt sent to the buyer")),
        ("payment_profile_contact", _("Receipt sent to payment profile contact")),
    )

    account_state = models.ForeignKey(
        CurrentAccountState, related_name="account_settings", on_delete=models.CASCADE
    )
    payment_profile_id = models.CharField(max_length=36)
    send_to = models.CharField(max_length=32, choices=SEND_TO_OPTIONS, default="buyer")

views.py

 @action(detail=True, methods=["post"])
    def update_state(self, request, pk=None):
        integration = AccountServiceManager.get_by_name(str(pk))
        if not account:
            raise Http404()

        return Response("", status=status.HTTP_200_OK)

test update_state.py

    def test_update_state(self):
        user = self.admin_user
        self.client.force_login(user)
        account = AccountFactory(
            name="account name", enabled=True, provider=str_to_kebab_case("account name")
        )

        payload = {
            "enable_personal_profile": True,
            "payment_profile_settings": [
                {
                    "payment_profile_id": "Something",
                    "send_to": "buyer",
                },
                {
                    "payment_profile_id": "Something else",
                    "send_to": "payment_profile_contact",
                }
            ]
        }
        response = self.client.post(f"{self.url}/account/update_state", data=json.dumps(payload), content_type="application/json")
        assert response.status_code == status.HTTP_200_OK

        account_account = CurrentAccountSetting.objects.all()
        assert len(account_account) == 1
        assert account_account.enable_personal_payment_profile is True

Я не могу понять, как я могу извлечь данные из реальной базы данных, чтобы я мог сделать утверждения в тесте. В настоящее время len(account_account) терпит неудачу, говоря, что у меня пустой массив, полученный из queryset[]. Что имеет смысл, поскольку я еще ничего не добавил в представления. Но как я могу на самом деле получить эти данные в представлениях?

Предположим, что AccountFactory создает для вас объект CurrentAccountSetting:

Возможно, это потому, что вы не запустили account.save() после строки 4 в test_update_state(). Или вы могли бы использовать create().

Если нет, то проблема в том, что вы не создали объект CurrentAccountSetting нигде в этом потоке.

Также в вашей последней строке кода вы, вероятно, хотите получить элемент из массива!

assert account_account[0].enable_personal_payment_profile

Вернуться на верх