我對管理員通用內聯表單有個奇怪的問題。我有兩個型號,主要項目和視頻多對多關係槽錄象,becouse我需要能夠不同數量的視頻投影和許多項目鏈接到視頻:在管理員通用內聯表單中創建新的通用相關對象的問題
class VideoLink(models.Model):
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
video = models.ForeignKey(Video)
class Project(models.Model):
name = models.CharField(max_length=50)
image_set = generic.GenericRelation('Image')
我沒有表現出視頻模式這裏,但這對我的問題並不重要。
所有我需要的是通過兩種方式來定義鏈接到主對象(項目)新的相關對象(視頻鏈接):
-
管理內嵌形式裏面
- 選擇視頻(!這個作品非常好)
- 在假video_url字段中定義新視頻的URL,創建新的Video對象並在主(Project)和新(Video)對象之間創建新的VideoLink對象。
對於第二種情況,我需要設置中間功能。它會處理新視頻的網址(如http://www.youtube.com/watch?v=WIXVzeB0DUo),創建新的視頻對象並將其與youtube.com同步。我認爲最好的辦法 - 把這個放到AdminVideoLink的表格乾淨的方法,我說得對嗎?
所以,我寫了這個代碼:
但每節約的形式後,我看到管理在線表單中錯誤時間:用視頻對象附近選擇 - 「字段是必須的」(我的翻譯)。但是我在乾淨的方法中設置了這個字段。我檢查它:self.cleaned_data ['video']包含我剛創建的新的Video對象 並同步。
另一個很奇怪的問題是:我在這個清理方法裏面找不到父實例(主項目對象)。如果我用簡單的ManyToMany對象(沒有通用關係和泛型.GenericTabularInline表單)做同樣的事情,我可以在我的內聯表單中看到視頻和項目字段,但是在通用情況下,我沒有它。
我查過了相關的post,但沒有找到答案。