I'm trying to learn Django by implementing a bicycle serial number 
database.  A bike is a specific model from a given manufacturer.  Each 
frame of a given model can have multiple serial numbers at different 
locations on the frame.  These relationships are easily captured in this 
simplified model definition:

class Manufacturer(models.Model):
    name = models.CharField(max_length=64)

class Model(models.Model):
    manufacturer = models.ForeignKey(Manufacturer)
    name = models.CharField(max_length=64)

class Frame(models.Model):
    model = models.ForeignKey(Model)
    year = models.IntegerField(blank=True, null=True)

class SerialNumber(models.Model):
    number = models.CharField(max_length=64)
    location = models.CharField(max_length=4,
                                choices=LOCATION_CHOICES) # 
LOCATION_CHOICES is elided here...
    frame = models.ForeignKey(Frame)

Now, this application is essentially a means to populate a database, so 
I've been tempted to just use the admin interface and dole out logins for 
people I trust.  That has two problems.  One, I will eventually encounter 
someone who's not trustworthy.  Two, I won't learn much about creating 
forms.

So, I'd like to create a form which allows users to add a frame to the 
database with the opportunity to submit multiple serial numbers at one go. 
 It's not clear to me what I should use.  I sort of think inline formsets 
are candidates, but have had precious little luck finding an explanation of 
what their object is, and even less luck finding a tutorial type example. 
 I did find an example here:

https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-formsets

which looked promising, and I was able to adapt the BookFormSet and print 
its as_table() output (lots of interesting HTML), but I can't make it work 
in "real life".  I defined these SNFormSet and AddForm classes:

SNFormSet = inlineformset_factory(Frame, SerialNumber)

class AddForm(forms.Form):
    man = 
forms.ModelChoiceField(queryset=Manufacturer.objects.order_by("name"),
                                 label="Manfacturer")
    mod = forms.CharField(max_length=100, label="Model")
    snset = SNFormSet(instance=Frame())

When I display the form, I see widgets for the manufacturer and model, but 
nothing related to the SNFormSet. I must be missing some connection between 
the SNFormSet instance and the AddForm, but It's not clear what.

Any suggestions?

Thx,

Skip Montanaro

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to