X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/a8309d6b25f3b52df735a4c2afbe65c77c69bca0..132379d86ad326bdd923e07f9dd0c4ed1c4e348a:/admin.py?ds=sidebyside diff --git a/admin.py b/admin.py index 64893d5..5685f14 100644 --- a/admin.py +++ b/admin.py @@ -228,7 +228,7 @@ class PageAdmin(NodeAdmin): initial_content = None try: initial_content = page.contentreferences.get(name__exact=container_name, content_type=container_content_type).content.pk - except ContentReference.DoesNotExist: + except (ContentReference.DoesNotExist, AttributeError): pass form.base_fields[('contentreference_container_%s' % container_name)] = forms.ModelChoiceField(label='References', widget=ModelLookupWidget(container_content_type), initial=initial_content, required=False, queryset=container_content_type.model_class().objects.all()) return form @@ -249,10 +249,17 @@ class PageAdmin(NodeAdmin): for container_name, container_content_type in contentreference_containers: if ('contentreference_container_%s' % container_name) in form.cleaned_data: content = form.cleaned_data[('contentreference_container_%s' % container_name)] - contentreference, created = page.contentreferences.get_or_create(name=container_name, defaults={'content': content}) - if not created: - contentreference.content = content - contentreference.save() + try: + contentreference = page.contentreferences.get(name=container_name) + except ContentReference.DoesNotExist: + contentreference = ContentReference(name=container_name, page=page, content_type=container_content_type) + + if content == None: + contentreference.content_id = None + else: + contentreference.content_id = content.id + + contentreference.save() class TemplateAdmin(admin.ModelAdmin):