X-Git-Url: http://git.ithinksw.org/philo.git/blobdiff_plain/47e6d542650e61e998e8b8d2195755c3eeec2037..8efb262f2f1a58b3ce30d16d376bc64a56a24119:/admin.py 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):