Define other Caught models to hold information for each capture. Give it a related_name to make it easy to access your code. You may also want unique_together matching fields.
class Species(models.Model): name = models.CharField(max_length=255, unique=True) def __unicode__(self): return '%s/%d' % self.name class Questionaire(models.Model): pass class Caught(models.Model): species = models.ForeignKey(Species) number = models.IntegerField() questionaire = models.ForeignKey( Questionaire, related_name='catches') def __unicode__(self): return '%s/%d' % (self.species.name, self.number)
Use it as follows:
(InteractiveConsole) >>> from app.models import * >>> s1 = Species(name='Salmon') >>> s1.save() >>> s2 = Species(name='Mackerel') >>> s2.save() >>> q = Questionaire() >>> q.save() >>> c1 = Caught(species=s1, number=7, questionaire=q) >>> c2 = Caught(species=s2, number=5, questionaire=q) >>> c1.save() >>> c2.save() >>> q.catches.all() [<Caught: Salmon/7>, <Caught: Mackerel/5>] >>>
source share