簡體   English   中英

django orm 中的現場沖突

[英]Field clashes in django orm

我對 Django ORM 有一些問題。 我有三個班級:

交易.py

class Transaction(models.Model):

    class Status(models.TextChoices):
        PENDING = 'Pending'
        PROCESSING = 'Processing'
        CHARGED = 'Charged'
        AUTHORIZED = 'Authorized'
        CANCELLED = 'Cancelled'
        REJECTED = 'Rejected'
        ERROR = 'Error'
        ISSUED = 'Issued'

    amount = models.DecimalField(max_digits=6, decimal_places=2)  # in USD
    status = models.CharField(
        max_length=15,
        choices=Status.choices,
        default=Status.PROCESSING,
    )
    created_at = models.DateTimeField()
    updated_at = models.DateTimeField()
    from_account = models.CharField(max_length=16)
    to_account = models.CharField(max_length=16)

付款.py

class Payment(Transaction):
    order = models.ForeignKey(Order, on_delete=models.CASCADE)

    def __str__(self):
        return f"Payment {super().__str__()}"


class Refund(Payment):
    payment = models.ForeignKey(
        Payment,
        on_delete=models.CASCADE,
        related_name='parent_payment'
    )

    def __str__(self):
        return f"Refund payment={self.payment.id} {super(Transaction, self).__str__()}"

當我嘗試進行遷移時,我遇到了這個錯誤

SystemCheckError: System check identified some issues:

ERRORS:
booking.Refund.payment: (models.E006) The field 'payment' clashes with the field 'payment' from model 'booking.transaction'.

據我了解與 inheritance 相關的問題及其在 ORM 中的具體問題,但我不確定

只需添加它


class Meta:
abstract = True

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM