我試圖創建forms.py文件,新視圖等,但當我點擊我的網站鏈接上創建「新車」我得到一個錯誤:無效的文字爲int()與基10:'新'
ValueError at /car/new/
invalid literal for int() with base 10: 'new'
我在文檔中搜索瞭解決方案几次,但它看起來應該 - 所以如何修復?
model.py
class Vehicle(models.Model):
name = models.CharField(max_length=50)
slug = models.SlugField(max_length=50)
description = models.TextField()
icon = models.ImageField(upload_to='icons/images/')
class Car(models.Model):
name = models.CharField(max_length=50)
slug = models.SlugField(max_length=50)
description = models.TextField(default='Car', max_length=1000)
icon = models.ImageField(upload_to='icons/images', blank=True)
vehicle = models.ForeignKey('Vehicle')
urls.py:
url(r'^car/new/$', views.car_new, name='car_new'),
views.py:
def car_new(request):
if request.method == "POST":
form = CarForm(request.POST, request.FILES)
if form.is_valid():
car = form.save(commit=False)
car.save()
form.save_m2m()
return redirect('website.views.car_detail', pk=car.pk)
else:
form = CarForm()
return render(request, 'website/car_new.html', {'form': form})
forms.py:
class CarForm(forms.ModelForm):
vehicle = forms.ModelChoiceField(label="Vehicle", queryset=Vehicle.objects.all())
class Meta:
model = Car
fields = ('name', 'description', 'icon', 'vehicle',)
car_new.html:
{% block content %}
<div>
<form method="post" enctype="multipart/form-data">{% csrf_token %}
{{ form.as_p }}
<button type="submit" class="save btn btn-default">OK</button>
</form>
</div>
{% endblock %}
Line in base.html file:
<a href="/car/new">New car</a>
Traceback:
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\core\handlers\base.py" in get_response
149. response = self.process_exception_by_middleware(e, request)
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\core\handlers\base.py" in get_response
147. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\name\djangofolder\myproject\website\views.py" in car_detail
23. car = get_object_or_404(Car, pk=pk)
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\shortcuts.py" in get_object_or_404
155. return queryset.get(*args, **kwargs)
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\db\models\query.py" in get
378. clone = self.filter(*args, **kwargs)
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\db\models\query.py" in filter
790. return self._filter_or_exclude(False, *args, **kwargs)
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\db\models\query.py" in _filter_or_exclude
808. clone.query.add_q(Q(*args, **kwargs))
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\db\models\sql\query.py" in add_q
1243. clause, _ = self._add_q(q_object, self.used_aliases)
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\db\models\sql\query.py" in _add_q
1269. allow_joins=allow_joins, split_subq=split_subq,
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\db\models\sql\query.py" in build_filter
1203. condition = self.build_lookup(lookups, col, value)
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\db\models\sql\query.py" in build_lookup
1099. return final_lookup(lhs, rhs)
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\db\models\lookups.py" in __init__
19. self.rhs = self.get_prep_lookup()
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\db\models\lookups.py" in get_prep_lookup
57. return self.lhs.output_field.get_prep_lookup(self.lookup_name, self.rhs)
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_lookup
744. return self.get_prep_value(value)
File "C:\Users\name\djangofolder\venv\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_value
976. return int(value)
Exception Type: ValueError at /car/new/
Exception Value: invalid literal for int() with base 10: 'new'
car_detail.py
def car_detail(request, pk):
car = get_object_or_404(Car, pk=pk)
return render(request, 'website/car_detail.html', {'car': car})
你需要經過完整的堆棧跟蹤,這裏有太多的代碼,很難說它發生在哪裏 –
但是你確實有一個bug'return redirect('website.views.car_detail',pk = car .pk)',你應該使用'reverse'來解釋你的url的真實路徑。https://docs.djangoproj ect.com/en/1。9/ref/urlresolvers /#reverse –
感謝您的建議,我編輯了主帖,我在traceback中看到了一些與new_car視圖有關的東西,所以我也粘貼它。 – znawca