作为另一个模型Django的字段的模型

2024-09-29 02:17:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在为一个网站设计一个支付系统,但我遇到了麻烦。一个人可以进行支付,并且该支付具有支付类型,例如,借记卡、信用卡或贝宝。因此,我需要的可能性,以增加新的付款方式。问题是我不知道如何链接这两个表,我知道我需要第三个表,其中只分配了payment_idpayment_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)

Tags: nameidtruemodelmodelstypepaymentlength
2条回答

您可以使用从Payment类到PaymentType类的ForeignKey字段来使用多对一关系

Payment类上的此字段:

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

这将创建从PaymentPaymentType的关系

Many-To-One - Foreign Key Django Reference

在付款模式中,添加字段名“付款类型”,并使用外键字段,如下所示:

payment_type = models.ForeignKey(PaymentType, related_name="payments", on_delete=models.SET_NULL)

相关问题 更多 >