У меня есть шаблон, в котором отображаются сведения о клиенте, а также кнопка «Создать заказ» внизу. Это должно привести пользователя на страницу формы создания потенциального клиента, где должно быть предварительно выбрано поле клиента.
Я новичок в django. Основываясь на ответах на предыдущие аналогичные вопросы, я пришел с кодом ниже. Но когда я нажимаю кнопку «Создать заказ», URL-адрес изменяется с «http://127.0.0.1: 8000 / sales / customer / 21 » на «http://127.0.0.1: 8000 / sales / customer / 21 /? customer_id = 21", но на странице ничего не происходит. Я также пытался использовать метод POST и токен csrf, но он дает HTTP ERROR 405. Могут ли некоторые помочь, пожалуйста, здесь.
Кроме того, у меня есть отдельное представление для создания Lead, что является своего рода дублированием CreateView for Lead , И я верю, что это не так, как должно быть. Какой способ объединить их в единое представление.
Ниже приведены фрагменты кода.
Models.py
class Customer(models.Model):
name = models.CharField(max_length=256)
email = models.EmailField(unique=True)
phone = models.PositiveIntegerField()
class Lead(models.Model):
customer = models.ForeignKey(Customer,related_name='Leads',on_delete=models.PROTECT)
destinations = models.CharField(max_length=256)
lead_source = models.CharField(max_length=256,choices=lead_source_choices,default='FNF')
lead_source_id = models.CharField(max_length=25,blank=True)
lead_status = models.CharField(max_length=25,choices=lead_status_choices,default='NEW')
remarks = models.TextField(blank=True)
trip_id = models.CharField(max_length=10,editable=False,unique=True,default="IN"+uuid.uuid1().hex[:5].upper())
creation_date = models.DateField(auto_now=True)
Forms.py
class LeadForm(forms.ModelForm):
class Meta:
model = Lead
fields = ('customer','destinations','lead_source','lead_source_id','lead_status','remarks')
class LeadFromCustomerForm(forms.ModelForm):
class Meta:
model = Lead
fields = ('destinations','lead_source','lead_source_id','lead_status','remarks')
Шаблон
<form method="GET">
<input type="hidden" name="customer_id" value="{{customer.id}}">
<a href="{% url 'SalesApp:lead_create_from_customer' %}">
<button class="btn btn-warning btn-lg float-right" type="submit">Create Lead</button></a>
</form>
Urls.py
path('lead/create/',views.LeadCreateView.as_view(),name='lead_create'),
path('lead/create/customer/',views.LeadCreateFromCustomerView.as_view(),name='lead_create_from_customer')
Views.py
class LeadCreateView(LoginRequiredMixin,UserPassesTestMixin,CreateView):
form_class = LeadForm
model = Lead
def test_func(self):
return self.request.user.groups.filter(name='Sales').exists()
class LeadCreateFromCustomerView(LoginRequiredMixin,UserPassesTestMixin,CreateView):
form_class = LeadFromCustomerForm
model = Lead
def test_func(self):
return self.request.user.groups.filter(name='Sales').exists()
def form_valid(self,form):
customer_id = self.request.GET.get("value")
form.instance.customer = Customer.objects.get(id=customer_id)
return super(LeadCreateFromCustomerView,self).form_valid(form)