Django сохраняет данные в неправильной модели Почему он сохраняет данные моделей B,C в модели A
У меня есть 3 модели django CustomerDetail
CarrierForm
InfluencerModel
Когда я пытаюсь сохранить данные в CarrierForm
или InfluencerModel
через различные формы страницы, они сохраняются в модели CustomerDetail
Почему это происходит, подскажите, что я делаю не так?
Вот модель
class CustomerDetail(models.Model):
full_name = models.CharField(max_length=255, null=False, blank=False)
email = models.EmailField(max_length=255, null=False, blank=False)
contact_number = models.CharField(max_length=10, null=False, blank=False)
message = models.TextField(null=False, blank=False)
visited_on = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.email
class CarrierForm(models.Model):
full_name = models.CharField(max_length=255, null=False, blank=False)
email = models.EmailField(max_length=255, null=False, blank=False)
contact_number = models.CharField(max_length=10, null=False, blank=False)
upload_resume = models.FileField(null=False, blank=False)
message = models.TextField(null=True, blank=True)
visited_on = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.email
class InfluencerModel(models.Model):
full_name = models.CharField(max_length=255, null=False, blank=False)
email = models.EmailField(max_length=255, null=False, blank=False)
contact_number = models.CharField(max_length=10, null=False, blank=False)
instagram_id = models.CharField(max_length=50, null=False, blank=False)
message = models.TextField(null=True, blank=True)
visited_on = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.email
Здесь есть Views
class HomeView(CreateView):
success_url = reverse_lazy('home')
model = CustomerDetail
template_name = 'home/home.html'
fields = ['full_name', 'email', 'contact_number', 'message']
def get_context_data(self, *args, **kwargs):
context = super(HomeView, self).get_context_data(*args, **kwargs)
context['files'] = HomeVideoAndImage.objects.all()
context['galleryImages'] = HomeGallery.objects.all()
context['reviewImages'] = Review.objects.all()
return context
class CarrierFormView(CreateView):
model = CarrierForm
template_name = 'home/carrier.html'
fields = ['full_name', 'email', 'contact_number', 'upload_resume', 'message']
def get_context_data(self, *args, **kwargs):
context = super(CarrierFormView, self).get_context_data(*args, **kwargs)
return context
class InfluencersPageView(CreateView):
model = InfluencerModel
template_name = 'home/influencers.html'
fields = ['full_name', 'email', 'contact_number', 'instagram_id', 'message']
def get_context_data(self, *args, **kwargs):
context = super(InfluencersPageView, self).get_context_data(*args, **kwargs)
return context
Рендеринг форм выглядит следующим образом
<form action="{% url 'home' %}" role="form" class="php-email-form" method="post"> {% csrf_token %}
<div class="row">
{{ form.as_table }}
<div class="col-md-6 form-group">
{{ form.full_name.errors }}
{{form.full_name|as_crispy_field}}
</div>
<div class="col-md-6 form-group mt-3 mt-md-0">
{{ form.email.errors }}
{{form.email|as_crispy_field}}
<!-- <input type="email" class="form-control" name="email" id="email" placeholder="Your Email" required>-->
</div>
<div class="form-group col-md-6">
{{ form.contact_number.errors }}
{{form.contact_number|as_crispy_field}}
<!-- <input type="text" class="form-control" name="subject" id="subject" placeholder="Subject" required>-->
</div>
<div class="form-group col-md-6">
{{ form.instagram_id.errors }}
{{form.instagram_id|as_crispy_field}}
<!-- <input type="text" class="form-control" name="subject" id="subject" placeholder="Subject" required>-->
</div>
</div>
<div class="form-group mt-3" rows="7">
{{ form.message.errors }}
{{form.message|as_crispy_field}}
<!-- <textarea class="form-control" name="message" rows="7" placeholder="Message" required></textarea>-->
</div>
<!-- <div class="my-3">-->
<!-- <div class="loading">Loading</div>-->
<!-- <div class="error-message"></div>-->
<!-- <div class="sent-message">Your message has been sent. Thank you!</div>-->
<!-- </div>-->
<div class="text-center">
<button type="submit" class="btn btn-outline-secondary" style="background-color:#FF512F; color: white">Send Message</button>
</div>
<!-- <div class="text-center"><button type="submit">Send Message</button></div>-->
</form>
<<<Поскольку вы предоставили только один шаблон, я бы предположил, что вы используете одну и ту же форму для всех упомянутых вами представлений.
Действие вашей формы указывает на один и тот же url home
. в <form action="{% url 'home' %}" role="form" class="php-email-form" method="post"> {% csrf_token %}
. Измените его соответствующим образом для того вида, в котором вы хотите, чтобы ваша форма обрабатывалась.