एक इनलाइन फॉर्मेट के माध्यम से प्रोग्रामेटिक रूप से एक नई विदेशीकी ऑब्जेक्ट पोस्ट करने का प्रयास करने में, मुझे एक त्रुटि प्राप्त हो रही है: ValueError: invalid literal for int() with base 10: ''
।यूनिट परीक्षण django इनलाइन फॉर्मेट
def test_merits_can_be_added(self):
self.c = Client()
self.c.login(username=self.user.username, password='dummy')
self.post_data = {
'name':u'Unhappy SE',
'concept':u'Sad clown',
'merit-TOTAL_FORMS':u'1',
'merit-MAX_NUM_FORMS':u'',
'merit-INITIAL_FORMS':u'1',
'merit-0-id':u'',
'merit-0-level':u'2',
'merit-0-character':u'1',
'merit-0-trait':u'11',
'merit-0-specializations':u'Sometimes'
}
sheet = GeistCharacterSheet.objects.create(name='Happy SE', user=self.user)
response = self.c.post(sheet.get_absolute_url(), self.post_data, follow=True)
self.assertEqual(GeistCharacterSheet.objects.get(pk=1).chosentrait_set.all().filter(trait__name='Common Sense')[0].level, 2)
self.assertEqual(GeistCharacterSheet.objects.get(pk=1).chosentrait_set.all().filter(trait__name='Common Sense')[0].specializations, u'Sometimes')
दृश्य कोड (फिर से, संक्षिप्तता के लिए छंटनी की):
def character_sheet(request, sheet_id=None):
charsheet = GeistCharacterSheet.objects.get(pk=sheet_id, user=request.user)
if request.method == 'POST':
sheet_form = GeistCharacterSheetForm(request.POST, instance=charsheet)
merit_formset = setup_merit_form(charsheet, post=request.POST)
if sheet_form.is_valid() and merit_formset.is_valid():
sheet_form.save()
merit_formset.save()
return redirect('/character-manager/list/')
def setup_merit_form(charsheet, post=None):
MeritFormSet = inlineformset_factory(GeistCharacterSheet, ChosenTrait, form=ChosenMeritForm, extra=1)
if post:
return MeritFormSet(post, instance=charsheet, queryset=ChosenTrait.objects.filter(trait__trait_type__name='Merit'), prefix='merit')
else:
return MeritFormSet(instance=charsheet, queryset=ChosenTrait.objects.filter(trait__trait_type__name='Merit'), prefix='merit')
यहाँ से ट्रैस है
यहाँ (संक्षिप्तता की खातिर फूला हुआ यहाँ) अपने परीक्षण के कोड है परीक्षण निष्पादन:
Traceback (most recent call last):
File "C:\charon_sheet\..\charon_sheet\character_manager\tests.py", line 119, in test_skills_can_be_changed
response = self.c.post(sheet.get_absolute_url(), self.post_data, follow=True)
File "C:\Program Files\BitNami DjangoStack\apps\django\django\test\client.py", line 449, in post
response = super(Client, self).post(path, data=data, content_type=content_type, **extra)
File "C:\Program Files\BitNami DjangoStack\apps\django\django\test\client.py", line 259, in post
return self.request(**r)
File "C:\Program Files\BitNami DjangoStack\apps\django\django\core\handlers\base.py", line 111, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "C:\charon_sheet\..\charon_sheet\character_manager\views.py", line 29, in character_sheet
merit_formset = setup_merit_form(charsheet, post=request.POST)
File "C:\charon_sheet\..\charon_sheet\character_manager\views.py", line 69, in setup_merit_form
return MeritFormSet(post, instance=charsheet, queryset=ChosenTrait.objects.filter(trait__trait_type__name='Merit'), prefix='merit')
File "C:\Program Files\BitNami DjangoStack\apps\django\django\forms\models.py", line 682, in __init__
queryset=qs)
File "C:\Program Files\BitNami DjangoStack\apps\django\django\forms\models.py", line 415, in __init__
super(BaseModelFormSet, self).__init__(**defaults)
File "C:\Program Files\BitNami DjangoStack\apps\django\django\forms\formsets.py", line 47, in __init__
self._construct_forms()
File "C:\Program Files\BitNami DjangoStack\apps\django\django\forms\formsets.py", line 108, in _construct_forms
self.forms.append(self._construct_form(i))
File "C:\Program Files\BitNami DjangoStack\apps\django\django\forms\models.py", line 691, in _construct_form
form = super(BaseInlineFormSet, self)._construct_form(i, **kwargs)
File "C:\Program Files\BitNami DjangoStack\apps\django\django\forms\models.py", line 437, in _construct_form
connection=connections[self.get_queryset().db])
File "C:\Program Files\BitNami DjangoStack\apps\django\django\db\models\fields\subclassing.py", line 53, in inner
return func(*args, **kwargs)
File "C:\Program Files\BitNami DjangoStack\apps\django\django\db\models\fields\subclassing.py", line 53, in inner
return func(*args, **kwargs)
File "C:\Program Files\BitNami DjangoStack\apps\django\django\db\models\fields\__init__.py", line 306, in get_db_prep_lookup
value = self.get_prep_lookup(lookup_type, value)
File "C:\Program Files\BitNami DjangoStack\apps\django\django\db\models\fields\__init__.py", line 292, in get_prep_lookup
return self.get_prep_value(value)
File "C:\Program Files\BitNami DjangoStack\apps\django\django\db\models\fields\__init__.py", line 479, in get_prep_value
return int(value)
ValueError: invalid literal for int() with base 10: ''
मैं मॉडल, रूपों, अधिक दृश्य पोस्ट कर सकता हूं, जो कोई भी सोचता है बी ई सहायक
समस्या 'merit-0-id':u''
पोस्ट आइटम के साथ है। मैंने (एक पूर्ण जंगली शॉट, मुझे पता है) का उपयोग करके, False
का उपयोग करके, 0 या -1 का उपयोग करके यूनिकोड के साथ और बिना प्रयास किया है।
मेरा मुख्य भ्रम आता है कि जब मैं सर्वर चला रहा हूं तो फॉर्म काम करता है। जब मैं फॉर्म जमा करता हूं तो मैंने पोस्ट वैरिएबल की जांच की है, और वह आईडी फ़ील्ड खाली हो सकती है और आइटम को ठीक जोड़ा जाता है।
परीक्षण धावक के माध्यम से सबमिट किए जाने पर फ़ॉर्म क्यों चल रहा है?
वह था! धन्यवाद! –