繁体   English   中英

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

[英]Model as a field of another model Django

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

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

Payment类上的此字段:

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

这将创建从PaymentPaymentType的关系。

请参阅多对一 - 外键 Django 参考

在支付模型中添加一个字段名称“payment_type”并使用如下外键字段:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM