class Food_Tag(models.Model):
name = models.CharField(max_length=200)
related_tags = models.ManyToManyField(\'self\', blank=True, symmetrical=False, through=
Since you didn't explicitly say that they need to be asymmetrical, the first thing I'll suggest is setting As eternicode pointed out, you can't do this when you're using a symmetrical=True. This will cause the relation to work both ways as you described.through model for the M2M relationship. If you can afford to go without the through model, you can set symmetrical=True to get exactly the behavior you describe.
If they need to remain asymmetrical however, you can add the keyword argument related_name="sources" to the related_tags field (which you might want to consider renaming to targets to make things more clear) and then access the related tags using meat.sources.all().