You'll first have to explain what you mean by 'reading from a file' and 'comparing'.
Are we comparing against serialized model exports? Is the user importing data from a csv file? What column(s) is(are) you using as keys for matching db objects against the file? Give us a little more details and we'll try giving some suggestions in return =) Sincerely, André Terra On 6/28/11, Josh Lothian <loth...@ornl.gov> wrote: > So I'm working on my first Django application, and I've run into a > stumbling block. In simplest terms, I've got two objects: > > def Package(models.Model): > name=models.CharField(max_length=255) > version=models.CharField(max_length=128) > > def Machine(models.Model): > hostname=models.CharField(max_length=255) > installed_packages=models.ManyToManyField(Package) > > I'm reading in information from some file, and need to compare against > objects already in the database. Ideally, I could just create these > objects in my code, compare to the existing Django objects, and add a > new entry if it's different from anything that exists already. > > However, I've got that dang ManyToManyField in there, meaning I need > to first commit a Machine to the DB, and then add Packages to it. > Otherwise, of course I get: > > ValueError: 'Machine' instance needs to have a primary key value before a > many-to-many relationship can be used. > > This seems non-ideal, since there's a pretty good chance I'll just > need to delete it from the database as a dupe of an existing Machine. > > I see a couple of ways around this: > > - Instantiate a Machine and a list of Packages, and compare them > separately. This isn't ideal, as my real objects likely have more > than 1 many-to-many relationship. > > - Do database queries and whatnot directly. Yuck! > > - Punt and just add/remove things from the database. This would > probably work fine now, but later on could definitely lead to scaling > issues. > > Am I missing an obvious solution here? I've scoured the docs and > can't seem to come up with anything that doesn't make me feel icky. > > -josh > > -- > 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+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/django-users?hl=en. > > -- Sent from my mobile device -- 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+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.