2012-05-11 29 views
1

我有這兩種模式:Django管理表單驗證從查詢集

class Service(MelosModel): 
    performer = models.ForeignKey(Performer) 
    event = models.ForeignKey('Event') 
    composition = models.ForeignKey(Composition) 


class Event(MelosModel): 
    event_type = models.ForeignKey('EventType') 
    project = models.ForeignKey(Project) 
    works = models.ManyToManyField(Work) 
    date_of_event = models.DateTimeField() 
    location = models.ForeignKey(Address) 

注:MelosModel是所有意圖和目的一樣models.Model。另外,Composition延伸Work

麻煩的是,需要對從Event.你如何做到這一點的可用Work s到驗證在Service管理形式組成的名單?

我閱讀了關於從查詢集製作ModelChoiceField的內容,但這並不會幫助,因爲在提交表單之前我們不知道Event是什麼。處理這個問題的最佳方法是什麼?

回答

0

如果我理解正確,您可以在您的服務模型類上編寫一個clean() method來執行自定義驗證。

+0

這絕對有效。但我仍然擔心我沒有正確地做到這一點。對我而言,讓服務組確定哪些作品存在於某個事件中會是一個更好的數據庫設計,但這顯然不利於驗證。 – tjb1982