multiSelectField с предварително избрани опции в Yesod

Имам връзка много към много между два обекта. Например, нека помислим за публикация в блог, която може да има няколко автора. Това може да е прост модел за него:

share [mkPersist sqlSettings, mkMigrate "migrateAll"] [persistLowerCase|
Person
    name String
    age Int Maybe
    deriving Show
Blogpost
    title String
    deriving Show
PersonBlogpost
    person PersonId
    blogpost BlogpostId
|]

Идеята ми е да има страница „Редактиране“ за обект на Blogpost и в нея да има multiSelectField за авторите и да има атрибута „избран“ в таговете на текущите автори. Потребителят ще може да променя авторите и да запазва промените си в базата данни. Всеки път, когато влезе отново в страницата за редактиране на същата публикация в блога, опциите, които е запазил, трябва да се показват избрани в multiSelectField.

В момента използвам MForm като този:

(mAuthorsRes, mAuthorsView) <- mopt
                                 (multiSelectField authors)
                                 ""
                                 Nothing

authors просто имайте всички автори в таблицата Person. Знам, че трябва да заменя последното Nothing за съответния код, но не знам как да го направя.

Благодаря предварително.


person Cruz    schedule 14.12.2013    source източник