user2449761
user2449761

Reputation: 1229

Django model with a list

How to implement a list in a Django model?

Lets say I have a UserProfile model, and each user can have a list of mortgages (undefined quantity) defined by MortgageModel.

class MortgageModel(models.Model):
   bank_name = models.CharField(max_length=128)
   sum = models.BigIntegerField()

class UserProfile(models.Model):
   user = models.OneToOneField(User, on_delete=models.CASCADE)
   # list of morgtages?

my only idea is to make a old school list, where every mortgage can point to another one or null, like this:

class MortgageModel(models.Model):
   bank_name = models.CharField(max_length=128)
   sum = models.BigIntegerField()
   next_mortgage = MortgageModel(null=True, default=null)

class UserProfile(models.Model):
   user = models.OneToOneField(User, on_delete=models.CASCADE)
   mortgages = MortgageModel(null=True, default=null)

is there any other possibility?

Upvotes: 0

Views: 1870

Answers (1)

rafaelc
rafaelc

Reputation: 59274

You'll have to assign a ForeignKey to User , so that each Mortgate 'belongs' to a user. That is how a One-To-Many relationship is done. Then, if you want to get the list of Mortgages a user have, you'd filter them out like MortgageModel.objects.filter(related_user=user)

So, you'd have something like

Model

   class MortgageModel(models.Model):
       bank_name = models.CharField(max_length=128)
       sum = models.BigIntegerField()
       related_user = models.ForeignKey(UserProfile)

    class UserProfile(models.Model):
       user = models.OneToOneField(User, on_delete=models.CASCADE)

View

list_of_mortages = MortgageModel.objects.filter(related_user=user)

Upvotes: 3

Related Questions