user1881957
user1881957

Reputation: 3378

Retrieve data from two tables with many to many relationship in Django?

I want to retrieve a data which has user id 1 from the table called file. The user and file table and many to many relationship. I want to show the file related to that user.

class GalaxyUser(models.Model):
    id = models.IntegerField(primary_key=True)
    create_time = models.DateTimeField(null=True, blank=True)
    update_time = models.DateTimeField(null=True, blank=True)
    email = models.CharField(max_length=765)
    password = models.CharField(max_length=120)
    external = models.IntegerField(null=True, blank=True)
    deleted = models.IntegerField(null=True, blank=True)
    purged = models.IntegerField(null=True, blank=True)
    username = models.CharField(max_length=765, blank=True)
    form_values_id = models.IntegerField(null=True, blank=True)
    disk_usage = models.DecimalField(null=True, max_digits=16, decimal_places=0, blank=True)
    class Meta:
        db_table = u'galaxy_user'

class File(models.Model):
    users = models.ManyToManyField(GalaxyUser)
    file_name = models.CharField(max_length=100)
    type = models.CharField(max_length=10)
    source = models.CharField(max_length=100)
    start_date = models.TextField()
    end_date = models.TextField()
    duration = models.TextField()
    size = models.TextField()
    flag = models.TextField()

If the user is logged in as user, I get the user_id let's say it's 1. Now, I want to retrieve the file name related to user 1 only. How can I do that?

Upvotes: 0

Views: 1529

Answers (3)

Aamir Rind
Aamir Rind

Reputation: 39659

user = GalaxyUser.objects.get(id=1)
files = user.file_set.all()

See more about ManyToMany lookups here

Upvotes: 1

File.objects.filter(users=GalaxyUser.objects.get(id=1))

Upvotes: 1

0xmtn
0xmtn

Reputation: 2670

You can use File.objects.filter(users__id__exact=1). Refer here.

Upvotes: 1

Related Questions