tina korat
tina korat

Reputation: 1

How can I call different Fields from one Django models to another fields of another Django Field?

I want to call MemberRegistration Model's 'fname' and 'regino' fields to TypeCharge Model (in 'serial' field), and 'fname' and 'presentaddress' fields to BankAccount Model (in 'accholder' field). I tried Foreign Key but it can only return one combination at a time due to def str(self). Thank You..!

Here are my models:

`class MemberRegistration(models.Model):
    regino = models.PositiveIntegerField(default=user_id)
    fname = models.CharField(max_length=200)
    presentaddress = models.CharField(max_length=500)
    
    def __str__(self):
        return str(self.regino) + " - " + self.fname

class TypeCharge(models.Model):
    serial = models.ForeignKey(MemberRegistration, on_delete=models.CASCADE)
    chargename = models.CharField(max_length=200)

class BankAccount(models.Model):
    accholder = models.ForeignKey(MemberRegistration, on_delete=models.CASCADE)`
    ```

Upvotes: 0

Views: 125

Answers (1)

Mohsen Hassani
Mohsen Hassani

Reputation: 161

You can create a separated method for each call in MemberRegistration model and call it on your BankAccount or TypeCharge like that:

models.py:

class MemberRegistration(models.Model):
    regino = models.PositiveIntegerField(default=user_id)
    fname = models.CharField(max_length=200)
    presentaddress = models.CharField(max_length=500)

    def __str__(self):
        return str(self.regino) + " - " + self.fname

    def from_type_charge(self):
        return str(self.regino) + " - " + self.fname

    def from_bank_account(self):
        return self.presentaddress + " - " + self.fname

class TypeCharge(models.Model):
    serial = models.ForeignKey(MemberRegistration,  on_delete=models.CASCADE)
    chargename = models.CharField(max_length=200)

class BankAccount(models.Model):
    accholder = models.ForeignKey(MemberRegistration, on_delete=models.CASCADE)

anywhere else:

type_charge = TypeCharge.objects.first() # get an instance of TypeCharge
print(type_charge.serial.from_type_charge())

bank_account = BankAccount.objects.first() # get an instance of BankAccount
print(bank_account.accholder.from_bank_account())

or you can do like this:

type_charge = TypeCharge.objects.first() # get an instance of TypeCharge
print(type_charge.serial.fname + " - " + type_charge.serial.regino)

bank_account = BankAccount.objects.first() # get an instance of BankAccount
print(bank_account.accholder.fname + " - " + bank_account.accholder.presentaddress)

Upvotes: 0

Related Questions