From 937a362ba8599c9571824493c13fed05223fb561 Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Thu, 10 Nov 2022 11:08:58 +0100 Subject: [PATCH] Fix errors on serializing unsaved wikidata imports. --- src/catalogue/models.py | 4 ++++ src/catalogue/views.py | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/catalogue/models.py b/src/catalogue/models.py index 92b27651..f9a2ecfe 100644 --- a/src/catalogue/models.py +++ b/src/catalogue/models.py @@ -227,11 +227,15 @@ class Book(WikidataModel): return f'https://wolnelektury.pl/katalog/lektura/{self.slug}/' def authors_str(self): + if not self.pk: + return '' return ", ".join(str(author) for author in self.authors.all()) authors_str.admin_order_field = 'authors__last_name' authors_str.short_description = _('Author') def translators_str(self): + if not self.pk: + return '' return ", ".join(str(author) for author in self.translators.all()) translators_str.admin_order_field = 'translators__last_name' translators_str.short_description = _('Translator') diff --git a/src/catalogue/views.py b/src/catalogue/views.py index 889a8321..3e55d693 100644 --- a/src/catalogue/views.py +++ b/src/catalogue/views.py @@ -165,7 +165,11 @@ class WikidataView(APIView): if attname.startswith("_"): continue for fieldname, lang in obj.wikidata_fields_for_attribute(attname): - d[fieldname] = getattr(obj, fieldname) + try: + d[fieldname] = getattr(obj, fieldname) + except ValueError: + # Like accessing related field on non-saved object. + continue if isinstance(d[fieldname], models.WikidataModel): d[fieldname] = { -- 2.20.1