Я очень новичок в этом, и это немного сложное приложение, поэтому, пожалуйста, потерпите меня.
Я создаю 2 страницы: 'submittargets' и 'entertargetdata'. На странице «submittargets» вам будет предложено выбрать учетную запись из списка, которая захватит идентификатор объекта учетной записи, передаст его URL-адресу и отобразит имя объекта в раскрывающемся списке на следующей странице. Я делаю это, поэтому я знаю, что соответствующий объект был передан.
На странице «entertargetdata» «вопросы» отображаются в поле для l oop, и вы будете вводить целевые оценки (от 1 до 100) для каждого вопроса, также в поле для l oop. Затем нажмите «отправить»: это отправит учетную запись, вопросы для учетной записи и оценки по этому вопросу в базу данных sqlite.
Я совершенно застрял.
Я не знаю, как передать объект учетной записи на страницу ввода данных. Я не знаю, как взять простые поля ввода и использовать форму для сбора этих данных. Я не знаю, как получить учетную запись, а также вопросы и оценки, чтобы присоединиться и появиться в таблице базы данных. Я так тяжело борюсь.
Текущая ошибка: страница не найдена: AccountTarget не соответствует заданному запросу.
Вот соответствующие URL:
urlpatterns = [
path('submittargets/', views.submittargets, name='submittargets'),
path('entertargetdata/<int:id>', views.enterTargetForm,
name='entertargetdata')
]
Просмотры:
def submittargets(request):
accounts = Account.objects.order_by('Name')
return render(request, 'submittargets.html', {'accounts': accounts})
def enterTargetForm(request, id):
accounts = Account.objects.order_by('Name')
questions = Question.objects.order_by('id')
if request.method == 'POST':
form = TargetForm(request.POST)
print(form)
if form.is_valid():
if id == 0:
formdetail = AccountTarget(
Account=request.POST['Account'])
else:
formdetail = get_object_or_404(AccountTarget, pk=id)
formdetail.Account = request.POST['Account']
formdetail.save()
return redirect('addscores')
else:
if id == 0:
form = TargetForm()
else:
formdetail = get_object_or_404(AccountTarget, pk=id)
form = TargetForm(
initial={'Account': formdetail.Account})
return render(request, 'entertargetform.html', {'form': form, "id": id,
'accounts': accounts,
'questions':
questions})
Шаблоны: submittargets:
{% extends 'base.html' %}
{% block title %}{{ section.title }}Select Account{% endblock %}
{% block content %}
<br>
<div class="container">
<h1 class="mt-4 mb-4 text-center">Select Account</h1>
<br>
<div class="col-md-2">
<a type=".button" class="btn btn-lg btn-primary btn-block" href="{% url 'addscores' %}">Back</a>
</div>
<br>
<hr>
<div class="row mt-1">
<div class="col-md-2">
<strong>Account</strong>
</div>
</div>
<hr>
{% for p in accounts %}
<div class="row mt-1">
<div class="col-md-3">
<strong>{{ p.Name }}</strong>
</div>
<div class="col-md-2">
<a class="btn btn-primary ml-1" href="{% url 'entertargetdata' p.id %}"><i class="fa fa-pencil"></i></a>
</div>
</div>
{% endfor %}
</div>
{% endblock content %}
entertargetdata:
{% extends 'base.html' %}
{% block title %}{{ section.title }}Enter Targets{% endblock %}
{% block content %}
<br>
<div class="container">
<h1 class="mt-4 mb-4 text-center">Enter Targets for the Account</h1>
</div>
<div>
<form method="post" id="questionForm" novalidate>
{% csrf_token %}
<div class="form-group">
<label for="{{ form.PrimaryMetric.id_for_label }}">Primary Metric</label>
{{ form.PrimaryMetric}}
</div>
<br>
<hr>
<div class="row mt-1">
<div class="col-md-2">
<strong>Primary Metric</strong>
</div>
<div class="col-md-4">
<strong>Secondary Metric</strong>
</div>
<div class="col-md-4 ">
<strong>Tertiary Metric</strong>
</div>
<div class="col-md-2"></div>
</div>
{% for question in questions %}
<hr width="100%">
<div class="row mt-1">
<div class="col-md-2">
{{ question.PrimaryMetric.Metric }}
</div>
<div class="col-md-4">
{{ question.SecondaryMetric.Metric }}
</div>
<div class="col-md-4">
{{ question.TertiaryMetric.Metric }}
</div>
<input type="number" name="quantity" min="0" max="100">
</div>
{% empty %}
<div class="row">
<div class="col-md-12">
No Questions in the database. <a href="{% url 'question_add' %}">Add the first question</a>.
</div>
</div>
{% endfor %}
<br>
<br>
<div class="wrapper">
<a type=".button" class="btn btn-lg btn-primary btn-block" href="{% url 'addstuff' %}">Submit</a>
</div>
<br>
<br>
</div>
{% endblock content %}
Модели:
class AccountTarget(models.Model):
Account = models.ForeignKey('Account', on_delete=models.PROTECT)
Question = models.ForeignKey('Question', on_delete=models.PROTECT)
CurrentPercent = models.IntegerField()
def __str__(self):
return '<ID: {}, PrimaryMetric -> <{}> {}, SecondaryMetric -> <{}> {},\
TertiaryMetric -> <{}> {}'.format(self.id,
self.AccountId,
self.QuestionId,
self.CurrentPercent)
Это горячий беспорядок, я знаю, но у меня есть не знаю, как пройти.