2017-06-17 68 views
3

我使用python 3.5和Django 1.10,並試圖在tests.py中測試我的應用程序,但出現錯誤,它說:ValueError: Cannot assign "1": "NewsLetter.UserID" must be a "User" instance.那麼如何在這裏測試fk值? 這裏是代碼:如何測試在django中有外鍵的模型?

class NewsletterModelTest(TestCase): 

    @classmethod 
    def setUpTestData(cls): 
     #Set up non-modified objects used by all test methods 
     NewsLetter.objects.create(NewsLetterID=1, Email='[email protected]', Connected=False,UserID=1) 


    class NewsLetter(models.Model): 
     NewsLetterID = models.AutoField(primary_key=True) 
     Email = models.CharField(max_length=255) 
     Connected = models.BooleanField(default=False) 
     UserID = models.ForeignKey(User, on_delete=models.CASCADE) 
     class Meta: 
       db_table = 'NewsLetter' 

回答

3

在你setupTestData方法,你必須創建一個User對象傳遞給它的專刊對象創建方法。

@classmethod 
def setUpTestData(cls): 
    #Set up non-modified objects used by all test methods 
    user = User.objets.create(<fill params here>) 
    NewsLetter.objects.create(NewsLetterID=1, Email='[email protected]', Connected=False,UserID=user) 
+0

事情是用戶也有一個以上的FK場,所以這是不是意味着我要補充model.objects.create到我會在每類中使用的所有型號? – mg22

+0

您必須首先創建對象,將其傳遞給任何具有fk字段的類。這個 –

+0

沒有其他解決方法,謝謝。 – mg22