I'm a new user to django and am attempting to go through the Sams
"Teach Yourself Django in 24 hours"  book and am having an issue
related to the chapter on saving form data.  I'm hoping someone can
give me a hand.

I'm using Django 1.0

Here's my model:

class Person(models.Model):
    userID = models.ForeignKey(User, unique=True)
    name = models.CharField('name', max_length=200)
    birthday = models.DateField('Birthday', blank = True, null=True)
    email=models.EmailField('Email', max_length=100, unique=True)

Here's what the book says to use for the form:

def person_form(request, pID='0'):
    p = get_object_or_404(Person, pk=pID)
    if request.method == 'POST':
        if request.POST['submit'] == 'update':
            message = 'Update Request for %s.' % p.name
            PersonForm = forms.form_for_instance(p)
            f = PersonForm(request.POST.copy())
            if f.is_valid():
                try:
                    f.save()
                    message += ' Updated.'
                except:
                    message = ' Database Error.'
            else:
                message += ' Invalid.'


That seems to be the "old" way of doing forms (I found that
forms_for_instance doesn't exist),
so I've modified it to look like this:

class PersonForm(ModelForm):
    class Meta:
        model=Person

def person_form(request, pID='0'):
    p = get_object_or_404(Person, pk=pID)
    if request.method == 'POST':
        if request.POST['submit'] == 'update':
            message = 'Update Request for %s.' % p.name
            f = PersonForm(request.POST)
            if f.is_valid():
                try:
                    f.save()
                    message += ' Updates.'
                except:
                    message = ' Database Error.'
            else:
                message += ' Invalid.'

I hope my modications are correct here - they could be part of the
issue.

The problem I have is that when I go to the form for a person, such as
http://127.0.0.1:8000/people/Form/3/, and then modify a field such
as the birthday, when I then click on the update button, the is_valid
()
method returns false and the errors that get printed to the form are:
  * Person with this UserID already exists
  * Person with this Email already exists

It seems like update is trying to create a new person with the
same UserID, when really I want to just be modifying the person
with that UserID.

Can anyone tell me what I'm doing wrong?

Thanks,

Margie



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to