2015-12-16 4 views
4

У меня есть ModelForm, который содержит ForeignKey, скажем для объекта User, но он может быть для любой другой модели. У меня есть единичный тестовый класс для этой формы, но когда я пытаюсь передать его данные, я получаю ошибку Select a valid choice. That choice is not one of the available choices. Тест выглядит так:Модульные тесты Django с ForeignKey

class Monkey(Model): 
    user = models.ForeignKey(User) 
    ... 

class MyForm(ModelForm): 
    class Meta: 
     model = Monkey 
     fields = ['user', ...] 

def test_my_form_with_a_user(self): 
    ... 
    data = {'user': User.objects.get(pk=1), ... } # Nope. 
    data = {'user': [u'1'], ... } # Nope. 
    data = {'user': [u'JaneDoe'], ... } # Nope. 
    form = MyForm(data, ...) 
    self.assertTrue(form.is_valid(), form.errors) 
    ... 

Я попытался любое количество перестановок для user, но я получаю ту же ошибку.

Что мне не хватает?

+0

Есть ли у вас другие поля выбора в форме? –

+0

@ LorenzoPeña: Почему это имеет значение? – Sardathrion

ответ

6

Вы должны быть в состоянии присвоить значение вашего поля пользователя в тесте с использованием следующим:

def test_my_form_with_a_user(self): 
    user_pk = User.objects.get(pk=1).pk 
    data = {'user': user_pk} 
    ... 
+0

Сначала это не сработало, затем, посмотрев на форму, она отфильтровала некоторых пользователей. Один (pk = 1) недействителен. Гах. Там есть, в конце. Спасибо. – Sardathrion

+1

Нет проблем. Я тоже сделал то же самое! –

Смежные вопросы