Fixed #1745 -- Accessing many-to-many relationships without a PK value now throws an exception. Thanks, Luke

git-svn-id: http://code.djangoproject.com/svn/django/trunk@2817 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Adrian Holovaty 2006-05-02 19:51:41 +00:00
parent aba95b718c
commit 69d6bd7af3
2 changed files with 5 additions and 4 deletions

View File

@ -239,8 +239,9 @@ def create_many_related_manager(superclass):
self.join_table = join_table self.join_table = join_table
self.source_col_name = source_col_name self.source_col_name = source_col_name
self.target_col_name = target_col_name self.target_col_name = target_col_name
if instance:
self._pk_val = self.instance._get_pk_val() self._pk_val = self.instance._get_pk_val()
if self._pk_val is None:
raise ValueError("%r instance needs to have a primary key value before a many-to-many relationship can be used." % model)
def get_query_set(self): def get_query_set(self):
return superclass.get_query_set(self).filter(**(self.core_filters)) return superclass.get_query_set(self).filter(**(self.core_filters))

View File

@ -110,8 +110,8 @@ API_TESTS = """
>>> a2.delete() >>> a2.delete()
>>> Article.objects.all() >>> Article.objects.all()
[Django lets you build Web apps easily] [Django lets you build Web apps easily]
>>> p1.article_set.all() >>> p2.article_set.all()
[Django lets you build Web apps easily] []
# Adding via the 'other' end of an m2m # Adding via the 'other' end of an m2m
>>> a4 = Article(headline='NASA finds intelligent life on Earth') >>> a4 = Article(headline='NASA finds intelligent life on Earth')