2017-06-17 5 views
3

Ich benutze Python 3.5 und Django 1.10 und versuche, meine app in tests.py zu testen, aber ein Fehler erschien, sagte es: ValueError: Cannot assign "1": "NewsLetter.UserID" must be a "User" instance. so wie man hier einen fk-Wert zu testen? hier ist der Code:Wie testet man ein Modell mit einem Fremdschlüssel im 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' 

Antwort

3

In Ihrem setupTestData Verfahren Sie haben ein Benutzerobjekt erstellen es in NewsLetter Objekt zu übergeben Methode erstellen.

+0

die Sache ist Benutzer hat auch mehr als ein fk-Feld, so bedeutet das, ich muss model.objects.create zu allen Modellen hinzufügen, die ich in jeder Klasse verwenden werde? – mg22

+0

Sie müssen das Objekt zuerst erstellen, um es an eine Klasse mit einem fk-Feld zu übergeben. Es gibt keinen anderen Weg um diese –

+0

es funktioniert danke. – mg22

Verwandte Themen