X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/47e6d542650e61e998e8b8d2195755c3eeec2037..d7454a2bc147c702f6ee8036b2818130012a1192:/admin.py?ds=inline diff --git a/admin.py b/admin.py index 49134e1..9e991d9 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,12 +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)] + 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: - continue - contentreference, created = page.contentreferences.get_or_create(name=container_name, defaults={'content': content}) - if not created: - contentreference.content = content - contentreference.save() + contentreference.content_id = None + else: + contentreference.content_id = content.id + + contentreference.save() class TemplateAdmin(admin.ModelAdmin):