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.