Модель как поле другой модели Django - PullRequest
0 голосов
/ 27 марта 2020

Я разрабатываю платежную систему для сайта, но у меня проблемы. Человек может выполнить Платеж, и этот Платеж имеет тип платежа, например, дебетовая карта, кредитная карта или PayPal. Итак, мне нужна возможность добавить новые способы оплаты. Проблема в том, что я не знаю, как связать эти две таблицы, я знаю, что мне нужна третья таблица с назначенными только payment_id и payment_type_id. Есть ли способ создать это с Django?

class PaymentType(models.Model):
    """Payment option available"""
    name = models.CharField(unique=True, max_length=255)
    created_on = models.DateTimeField(auto_now_add=True)
    active = models.BooleanField(default=False)

    def __str__(self):
        return self.name


class Payment(models.Model):
    class PaymentStatus(models.TextChoices):
        DONE = '1', "DONE"
        PENDENT = '2', "PENDENT"
        CANCELED = '3', "CANCELED"

    status = models.CharField(max_length=10,
                              choices=PaymentStatus.choices,
                              default=PaymentStatus.PENDENT)
    # payment type
    created_on = models.DateTimeField(auto_now_add=True)

Ответы [ 2 ]

0 голосов
/ 27 марта 2020

В модели оплаты добавьте имя поля "payment_type" и используйте поле внешнего ключа, как показано ниже:

payment_type = models.ForeignKey(PaymentType, related_name="payments", on_delete=models.SET_NULL)
0 голосов
/ 27 марта 2020

Вы можете использовать отношение много-к-одному , используя поле ForeignKey из класса Payment в класс PaymentType.

Это поле в Payment класс:

payment_type = models.ForeignKey(PaymentType, null=False, blank=False, on_delete=models.CASCADE)

Это создаст связь от Payment до PaymentType.

См. Много-к-одному - Внешний ключ Django Ссылка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...