Отказ от ответственности: Относительно новичок в Djano, поэтому простите любые недостатки в вопросе.
У меня есть простая форма с полем DAL, и я пытаюсь передать id значения формы и slug для отображения страницы сведений. DAL предоставляет результаты, как и ожидалось. При отправке я получаю следующую ошибку:
django.urls.exceptions.NoReverseMatch: Reverse for 'asset_detail' with arguments '(39526, '')' not found. 1 pattern(s) tried: ['(?P<id>[0-9]+)\\/(?P<slug>[-a-zA-Z0-9_]+)\\/$']
Обратите внимание, что идентификаторы существующих данных останавливаются на 39499. Этот идентификатор (и 39500-39525) был сгенерирован при отправке. Я не хочу добавлять новые записи в базу данных, а просто искать существующие. Ниже приведены URL, форма, виды, модель и шаблон:
# models.py
class CI(models.Model):
ci_type = models.ForeignKey(Category,
related_name='assets',
on_delete=models.CASCADE,
blank=True,
null=True)
name = models.CharField(max_length=200, db_index=True)
slug = models.SlugField(max_length=200,db_index=True)
status = models.BooleanField(default=True)
serial = models.CharField(max_length=140, blank=True)
asset_tag = models.CharField(max_length=53, blank=True)
model_source = models.CharField(max_length=54, blank=True)
vendor = models.CharField(max_length=58, blank=True)
support_level = models.CharField(max_length=60, blank=True)
class Meta:
ordering = ('name',)
index_together = (('id', 'slug'),)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('lookup:asset_detail',
args=[self.id, self.slug])
# forms.py
class AssetForm(forms.ModelForm):
category = forms.ModelChoiceField(
queryset=Category.objects.all(),)
name = forms.ModelChoiceField(
queryset=CI.objects.all(),
widget=autocomplete.ModelSelect2(
url='asset-autocomplete',
forward=(forward.Field('category', 'ci_type'),)))
class Meta:
model = CI
fields = ('name',)
# views.py
class AssetView(CreateView):
model = CI
form_class = AssetForm
template_name = 'lookup/asset.html'
# urls.py
path('<int:id>/<slug:slug>/', views.ci_detail,
name='asset_detail'),
#asset.html (template)
<form action="{{ ci.get_absolute_url }}" method="post">
<label for="asset_type">Select Asset:</label>
{% csrf_token %}
{{ form.as_p }}
<div class="col-4">
<p><input class="btn btn-primary" type="submit" value="Select"></p>
Заранее спасибо!