2017-06-19 64 views
1

我是FactoryBoy的新手。我正在爲文檔中的確切示例嘗試示例:reverse dependenciesDjango Factory Boy - 反向依賴(Reverse ForeignKey)常見recipy

1)它是正確的,所提到的 「UserLogFactory」 是 「很明顯的」 一個應該讓自己在:

class UserLogFactory(factory.django.DjangoModelFactory): 
    class Meta: 
     model = models.UserLog 

2)我正在一個AttributeError

類型對象「用戶日誌」有沒有屬性「ACTION_CREATE」

我在網上搜索,我發現1個引用(github error report)誰似乎有在同一天自己解決。他沒有提到解決方案,但從他的評論中,我收集它是明顯的...

在此先感謝您的幫助!
親切的問候。

回答

1

按照有關你在RelatedFactory創建定義RelatedFactorySubFactory, 命名參數出廠男孩文檔將被傳遞到UserLogFactory,使action預計將在UserLogFactory領域。發生

log = factory.RelatedFactory(UserLogFactory, 'user', action=models.UserLog.ACTION_CREATE) 

AttributeError的用戶日誌,因爲缺乏ACTION_CREATE,我以爲是對UserLog.action領域可能選擇一個常量定義。

這是可能的方式來定義UserLog型號:

class UserLog(models.Model): 
    ACTION_CREATE = 'CREATE' 
    ACTION_UPDATE = 'UPDATE' 

    ACTION_CHOICES = (
     (ACTION_CREATE, 'create'), 
     (ACTION_UPDATE, 'update'), 
    ) 
    user = models.ForeignKey(User) 
    action = models.CharField(choices=ACTION_CHOICES) 

欲瞭解更多有關choices看看Django choices docs

+0

阿列克謝嗨,感謝您的回答;明確。與此同時,我發現https://github.com/FactoryBoy/factory_boy/issues/58其中示例代碼基本上顯示相同:應該將「ACTION_CREATE」作爲自己的東西。我是唯一一個發現這個有點不清楚的人嗎?我所看到的factory_boy我喜歡,但是我對文檔有點麻煩...... – MZA

+0

該問題與您的問題沒有直接關係。這是關於名稱衝突,它是固定的。您可以重新打開您在問題中提到的問題,以解決此特定文檔的不一致問題。 –