Search code examples
djangomany-to-many

Many-to-many relationships with several fields in Django


I have the following model:

class Trip(models.Model):
    driver = models.ForeignKey(User)
    trip_cost = models.IntegerField(blank=True, null=True)
    passenger = models.CharField(max_length=50, blank=True, null=True)
    shared_cost = models.IntegerField(default=0, blank=True, null=True)

Each Trip can have a driver alone, or a driver with several passenger. For each passenger the driver can set the percentage of the trip_cost each passenger is going to pay.

What I need is to have:

  1. the field passenger to be listing all Users
  2. several passenger + shared_cost for each Trip.

I guess I should use Many-to-many but I cannot make it work. Also when I try to set the passenger to models.ForeignKey(User), I get an error.

Any help or direction highly appreciated.


Solution

  • Use related_name when refer to same models using 2 fields.

    class Trip(models.Model):
        driver = models.ForeignKey(User,on_delete=models.CASCADE, related_name='driver')
        trip_cost = models.IntegerField(blank=True, null=True)
        passenger = models.ForeignKey(User,on_delete=models.CASCADE, related_name='passenger')
        shared_cost = models.IntegerField(default=0, blank=True, null=True)