I have 2 models Count is purely an incremental counter a model called Sale,
the reason for the Count models is to increment a reference for Sale and
other models
In a view I get the latest sale and count then I want to save the incemented
count (number) to Count also save number to Sale
First off, the instances of "0" at the end of the first two lines should be [0] (surrounded by square brackets), but I'm assuming that that's an artifact of the email transport.
Past that, your code doesn't actually *do* anything, other than pull two objects out of the database, and save them again, unmodified. Let's look at the method you've pasted, line by line:
customer = Sale.objects.all().order_by('-id').filter(email_address=email).distinct()[0]
this = Count.objects.all().order_by('-id')[0]
This part retrieves two objects from the database. You may want to guard these two lines with an exception handler -- if there are no matching Sale objects, or if the Count table is empty, either of these lines could raise a KeyError.
number = this.number + 1
This line creates a new local variable called number, and assigns it the value of this.number + 1. It doesn't do anything to the 'this' object at all.
a = this.save(force_insert=True)
So this line forces 'this' to be re-saved (remember, though, that it hasn't been modified, so the save doesn't really do anything). Model.save() doesn't return anything, so 'a' is assigned the value None.
ref = number
reference = number
name = customer.name
salutation = customer.salutation
Again, these just create some new local variables, but they don't actually change your customer object at all, so this line:
b = customer.save(force_update=True)
Just forces a re-save of the unmodified customer object.
I"m not sure exactly what it is that you're trying to do with this view, but I think that you are going to need some lines that actually update the 'this' and 'customer' object. You would do that like this:
this.number = this.number + 1
or
customer.reference = number
Then, when you save the objects (and just use "customer.save()", the force_update=True isn't really necessary), then the new values you have assigned will be saved in the database.
--
Ian Clelland
<clelland@gmail.com>
--
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 django-users+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.
No comments:
Post a Comment