diff --git a/src/adl/to_psql.clj b/src/adl/to_psql.clj
index dd4dcf1..faf2b21 100644
--- a/src/adl/to_psql.clj
+++ b/src/adl/to_psql.clj
@@ -281,7 +281,8 @@
     " ||', '|| "
     (compose-convenience-entity-field field entity application))
    " AS "
-   (field-name field)))
+   (field-name field)
+    "_expanded"))
 
 
 (defn emit-convenience-view
@@ -290,59 +291,62 @@
   [entity application]
   (let [view-name (safe-name (str "lv_" (:table (:attrs entity))) :sql)
         entity-fields (filter
-                       #(= (:type (:attrs %)) "entity")
-                       (properties entity))]
+                        #(= (:type (:attrs %)) "entity")
+                        (properties entity))]
     (s/join
-     "\n"
-     (remove
-      nil?
-      (flatten
-       (list
-        (emit-header
-         "--"
-         (str "convenience view " view-name " of entity " (:name (:attrs entity)) " for lists, et cetera"))
-        (s/join
-         " "
-         (list "CREATE VIEW" view-name "AS"))
-        (str
-         "SELECT "
-         (s/join
-          ",\n\t"
-          (map
-           #(if
-              (= (:type (:attrs %)) "entity")
-              (emit-convenience-entity-field % entity application)
-              (str (safe-name entity) "." (field-name %)))
-           (filter
-            #(not (= (:type (:attrs %)) "link"))
-            (all-properties entity) ))))
-        (str
-         "FROM " (s/join ", " (set (compose-convenience-view-select-list entity application true))))
-        (if
-          (not (empty? entity-fields))
-          (str
-           "WHERE "
-           (s/join
-            "\n\tAND "
-            (map
-             (fn [f]
-               (let
-                 [farside (child
-                           application
-                           #(and
-                             (entity? %)
-                             (= (:name (:attrs %)) (:entity (:attrs f)))))]
-                 (str
-                  (safe-name (:table (:attrs entity)) :sql)
-                  "."
-                  (field-name f)
-                  " = "
-                  (safe-name (:table (:attrs farside)) :sql)
-                  "."
-                  (safe-name (first (key-names farside)) :sql))))
-             entity-fields))))
-        ";"
-        (emit-permissions-grant view-name :SELECT (permissions entity application))))))))
+      "\n"
+      (remove
+        nil?
+        (flatten
+          (list
+            (emit-header
+              "--"
+              (str "convenience view " view-name " of entity " (:name (:attrs entity)) " for lists, et cetera"))
+            (s/join
+              " "
+              (list "CREATE VIEW" view-name "AS"))
+            (str
+              "SELECT "
+              (s/join
+                ",\n\t"
+                (flatten
+                  (map
+                    #(if
+                       (= (:type (:attrs %)) "entity")
+                       (list
+                         (emit-convenience-entity-field % entity application)
+                         (str (safe-name entity) "." (field-name %)))
+                       (str (safe-name entity) "." (field-name %)))
+                    (filter
+                      #(not (= (:type (:attrs %)) "link"))
+                      (all-properties entity) )))))
+            (str
+              "FROM " (s/join ", " (set (compose-convenience-view-select-list entity application true))))
+            (if
+              (not (empty? entity-fields))
+              (str
+                "WHERE "
+                (s/join
+                  "\n\tAND "
+                  (map
+                    (fn [f]
+                      (let
+                        [farside (child
+                                   application
+                                   #(and
+                                      (entity? %)
+                                      (= (:name (:attrs %)) (:entity (:attrs f)))))]
+                        (str
+                          (safe-name (:table (:attrs entity)) :sql)
+                          "."
+                          (field-name f)
+                          " = "
+                          (safe-name (:table (:attrs farside)) :sql)
+                          "."
+                          (safe-name (first (key-names farside)) :sql))))
+                    entity-fields))))
+            ";"
+            (emit-permissions-grant view-name :SELECT (permissions entity application))))))))
 
 
 (defn emit-referential-integrity-link
diff --git a/src/adl/to_selmer_templates.clj b/src/adl/to_selmer_templates.clj
index 69faf38..a813092 100644
--- a/src/adl/to_selmer_templates.clj
+++ b/src/adl/to_selmer_templates.clj
@@ -362,6 +362,7 @@
   taken from this `application`. If `page` is nil, generate a default page
   template for the entity."
   [page entity application]
+  ;; TODO
   )
 
 
@@ -416,7 +417,21 @@
                      :value "Search"}}]})))}]})
 
 
-(defn- list-tbody
+(defn edit-link
+  [entity application parameters]
+  (str
+    (editor-name entity application)
+    "?"
+    (s/join
+      "&"
+      (map
+        #(let [n (:name (:attrs %1))]
+           (str n "={{ record." %2 " }}"))
+        (key-names entity)
+        parameters))))
+
+
+(defn list-tbody
   "Return a table body element for the list view for this `list-spec` of this `entity` within
   this `application`."
   [list-spec entity application]
@@ -430,22 +445,26 @@
        (concat
          (map
            (fn [field]
-             {:tag :td :content [(str "{{ record." (:property (:attrs field)) " }}")]})
+             {:tag :td :content
+              (let
+               [p (first (filter #(= (:name (:attrs %)) (:property (:attrs field))) (all-properties entity)))
+                e (first
+                    (filter
+                      #(= (:name (:attrs %)) (:entity (:attrs p)))
+                      (children-with-tag application :entity)))
+                c (str "{{ record." (:property (:attrs field)) " }}")]
+               (if
+                 (= (:type (:attrs p)) "entity")
+                 [{:tag :a
+                   :attrs {:href (edit-link e application (list (:name (:attrs p))))}
+                   :content [(str "{{ record." (:property (:attrs field)) "_expanded }}")]}]
+                 [c]))})
            (fields list-spec))
          [{:tag :td
           :content
           [{:tag :a
      :attrs
-     {:href
-      (str
-        (editor-name entity application)
-        "?"
-        (s/join
-          "&"
-          (map
-            #(let [n (:name (:attrs %))]
-               (str n "={{ record." n "}}"))
-            (children (first (filter #(= (:tag %) :key) (children entity)))))))}
+     {:href (edit-link entity application (key-names entity))}
      :content ["View"]}]}]))}
     "{% endfor %}"]})