Fix errors on serializing unsaved wikidata imports.
[redakcja.git] / src / catalogue / views.py
index 95f33fd..3e55d69 100644 (file)
@@ -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] = {
@@ -178,6 +182,7 @@ class WikidataView(APIView):
                     d[fieldname] = [
                         {
                             "model": type(item)._meta.model_name,
+                            "id": item.pk,
                             "wd": item.wikidata,
                             "label": str(item) or item._wikidata_label
                         } for item in d[fieldname].all()