def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
clone = kwargs['data'].copy()
# clone = copy(kwargs['data'])
item_num = clone['item']
actual_item = Item.objects.get(item_number=item_num)
clone['item'] = str(actual_item.id)
# data.update({'item': actual_item})
kwargs['data'] = clone
return kwargs
'data'
Request Method: | GET |
---|---|
Request URL: | http://localhost:8000/utils/box-optimization/add-items/115 |
Django Version: | 2.0.5 |
Exception Type: | KeyError |
Exception Value: | 'data' |
Exception Location: | C:\WMS Repository\Warehouse Management System\utils\views.py in get_form_kwargs, line 62 |
Python Executable: | C:\miniconda3\envs\django\python.exe |
Python Version: | 3.6.5 |
Python Path: | ['C:\\WMS Repository\\Warehouse Management System', 'C:\\Program Files\\JetBrains\\PyCharm 2017.3.3\\helpers\\pydev', 'C:\\WMS Repository\\Warehouse Management System', 'C:\\Program Files\\JetBrains\\PyCharm 2017.3.3\\helpers\\pydev', 'C:\\Users\\heast\\.PyCharm2018.1\\system\\cythonExtensions', 'C:\\miniconda3\\envs\\django\\python36.zip', 'C:\\miniconda3\\envs\\django\\DLLs', 'C:\\miniconda3\\envs\\django\\lib', 'C:\\miniconda3\\envs\\django', 'C:\\Users\\heast\\AppData\\Roaming\\Python\\Python36\\site-packages', 'C:\\miniconda3\\envs\\django\\lib\\site-packages', 'C:\\Program Files\\JetBrains\\PyCharm ' '2017.3.3\\helpers\\pycharm_matplotlib_backend'] |
Server time: | Mon, 16 Jul 2018 11:16:38 -0400 |
I would alter user input in the clean methods.
--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to
django-users...@googlegroups.com.
To post to this group, send email to
django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-users/d1cddae6-72a7-46b3-a6b1-40fcdc22ae93%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
class AddItem(forms.ModelForm):
class Meta:
model = ItemsTestCollection
fields = ['item', 'qty', 'case']
def clean_item(self):
print("will it print anything?")
# Answer: nope, didn't print anything.
item_num = self.cleaned_data['item']
actual_item = Item.objects.get(item_number=item_num)
return actual_item.id
To post to this group, send email to djang...@googlegroups.com.
This StackOverflow question may help you:
Basically this:
For any field, if the Field.clean() method raises a ValidationError, any field-specific cleaning method is not called. However, the cleaning methods for all remaining fields are still executed.
item should already return an instance of an Item object without your clean method.
To post to this group, send email to django...@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/e7b64bc4-8c00-4db8-aada-e3f2a4751b7e%40googlegroups.com.
class ItemNumField(forms.CharField):
def validate(self, value):
# item = Item.objects.get(item_number=value)
# value = item.id
# return value
return Item.objects.get(item_number=value)
class AddItem(forms.ModelForm):
item = ItemNumField()
class Meta:
model = ItemsTestCollection
# fields = ['item', 'qty', 'case']
fields = ['item', 'qty', 'case']
class ItemsTestCollection(models.Model):
"""An item to be tested in Box Opt."""
item = models.ForeignKey('item.Item', on_delete=models.CASCADE)
qty = models.IntegerField()
case = models.ForeignKey('EvaluateTestCase', on_delete=models.CASCADE)
box = models.ForeignKey('BoxResults', on_delete=models.CASCADE, null=True)
Cannot assign "'515874'": "ItemsTestCollection.item" must be a "Item" instance.
Request Method: | POST |
---|---|
Request URL: | http://localhost:8000/utils/box-optimization/add-items/118 |
Django Version: | 2.0.5 |
Exception Type: | ValueError |
Exception Value: | Cannot assign "'515874'": "ItemsTestCollection.item" must be a "Item" instance. |
Exception Location: | C:\miniconda3\envs\django\lib\site-packages\django\db\models\fields\related_descriptors.py in __set__, line 197 |
Python Executable: | C:\miniconda3\envs\django\python.exe |
---|---|
Python Version: | 3.6.5 |
Python Path: | ['C:\\WMS Repository\\Warehouse Management System', 'C:\\Program Files\\JetBrains\\PyCharm 2017.3.3\\helpers\\pydev', 'C:\\WMS Repository\\Warehouse Management System', 'C:\\Program Files\\JetBrains\\PyCharm 2017.3.3\\helpers\\pydev', 'C:\\Users\\heast\\.PyCharm2018.1\\system\\cythonExtensions', 'C:\\miniconda3\\envs\\django\\python36.zip', 'C:\\miniconda3\\envs\\django\\DLLs', 'C:\\miniconda3\\envs\\django\\lib', 'C:\\miniconda3\\envs\\django', 'C:\\Users\\heast\\AppData\\Roaming\\Python\\Python36\\site-packages', 'C:\\miniconda3\\envs\\django\\lib\\site-packages', 'C:\\Program Files\\JetBrains\\PyCharm ' '2017.3.3\\helpers\\pycharm_matplotlib_backend'] |
Server time: | Mon, 16 Jul 2018 14:58:30 -0400 |
---|