Search code examples
djangomany-to-many

Asserting for presence of added objects in Django ManyToMany relation


I have the following model;

class Station(models.Model):
    name = models.CharField(max_length=50)
    address = models.TextField(default='')
    owner = models.ForeignKey(User,default='')
    members = models.ManyToManyField(User, related_name='members')        

Now after the following code;

user1 = User.objects.create_user(username="username1",
                                     password="password1")
user1.save()
user2 = User.objects.create_user(username="username2",
                                     password="password2")
user2.save()
user3 = User.objects.create_user(username="username3",
                                     password="password3")
user3.save()
station = Station(name="somename",                            
                  address="someaddress",
                  owner=user1,
)
station.save()

station.members.add(user2,user3)

I want to assert that the added users are indeed there as the "members" of "Station"

Someone please tell me how

assert station.members == [user2,user3] doesn't fly. station.members actually is <Station: Station object>.members instead.


Solution

  • station.members is a Manager, i.e. it is the accessor for queries on the related users. You need to actually perform a query: in this case, station.members.all().