-1

我是 Django 的新手。我想要账户和交易的功能。账户可以有三种类型的交易。收入、费用和转移。它们之间都有一些共同的领域。但也有一些额外的领域。我想知道我可以制作这样的模型,以便我可以访问帐户的所有交易。而且我也想在休息框架中使用它们。有可能这样做吗?

from django.db import models

class Account(models.Model):
     name = models.CharField(max_length=50)
     balance = models.DecimalField(max_digits=7, decimal_places=1)
     def __str__(self):
         return self.name


class Transaction(models.Model):
    amount = models.DecimalField(max_digits=7, decimal_places=1)
    title = models.CharField(max_length=200)
    date_created = models.DateTimeField(auto_now=True,auto_now_add=False)
    account = models.ForeignKey(Account, on_delete=models.CASCADE, related_name='account')

    def __str__(self):
         return str(self.amount)


class Income(models.Model):
    source = models.CharField(max_length=200)
    transaction = models.ForeignKey(Transaction, on_delete=models.CASCADE, related_name='transaction')


class Expense(models.Model):
    category = models.CharField(max_length=200)
    transaction = models.ForeignKey(Transaction, on_delete=models.CASCADE, related_name='transaction')


class Transfer(models.Model):
    to = models.ForeignKey(Account, on_delete= models.CASCADE, related_name='to')
    transaction = models.ForeignKey(Transaction, on_delete=models.CASCADE, related_name='transaction')
4

1 回答 1

0

我试图理解你的问题,我会根据我的理解来回答。

因此,您的问题就像您必须创建多个模型(帐户、交易(收入、费用、转账))并在一段时间内参考这些详细信息(帐户交易)。

我可能会回答您的问题,您可以创建 5 种不同的模型,如您所提到的。

型号

帐户- 它是所有其他模型的父级。

交易-帐户模型的子项

收入、费用、转账-交易模型的子代

在帐户模型中,您可以创建在您提到的所有模型中使用的通用字段。这是一个主表,其中包含帐户持有人的帐号、姓名、手机和地址等列。

Transaction模型应该有一个Account模型的Foreignkey引用,它应该有account_id,以及transaction表中需要的其他列。

收入,费用和转移,这些模型应该有事务表的引用,如事务ID和其他需要的东西。

因此,当您想要进行一笔金额的转账时,您可能会在转账表中添加一些条目。在此之前,您应该有一个帐户。

现在想象一下,你有一个账户,你想转账一些金额,它应该有以下所有步骤: 当你转账金额时,它会生成一个 transaction_id,为此你需要在 Transation 表中做一个条目,它应该请参阅帐户持有人的详细信息。

在 Transaction 表中创建条目后,针对该 transaction_id,您需要在传输表中创建一个条目。每当您需要访问转账详细信息时,您都会获得 transaction_id 和帐户详细信息,因为它是您的表的主要信息。

class Account(models.Model):
    account_number = models.IntegerField(null=False)
    account_type = models.CharField(max_length=100, null=True)
    account_holder = models.CharField(max_length=100, null=True)


class Transaction(models.Model):
    account = models.ForeignKey(Account, related_name='account', on_delete=models.CASCADE)
    transation_number = models.IntegerField(null=False)


class Income(models.Model):
    transaction_id = models.ForeignKey(Account, related_name='transaction', on_delete=models.CASCADE)
    total_income = models.IntegerField(null=False)


class Expense(models.Model):
    transaction_id = models.ForeignKey(Account, related_name='transaction', on_delete=models.CASCADE)
    total_expense = models.IntegerField(null=False)


class Transfer(models.Model):
    transaction_id = models.ForeignKey(Account, related_name='transaction', on_delete=models.CASCADE)
    transfer_amount = models.IntegerField(null=False)
于 2021-04-09T10:55:09.213 回答