From: Radek Czajka Date: Thu, 10 Nov 2022 10:08:58 +0000 (+0100) Subject: Fix errors on serializing unsaved wikidata imports. X-Git-Url: https://git.mdrn.pl/redakcja.git/commitdiff_plain/937a362ba8599c9571824493c13fed05223fb561?ds=sidebyside Fix errors on serializing unsaved wikidata imports. --- 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] = {