Django数据保存到错误模型,为什么Model B和C的数据在Model A中保存?
我有三个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
def get_absolute_url(self):
return reverse("influencers", kwargs={'slug': self.slug})
我这样渲染表单:
<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>
这是网址配置:
urlpatterns = [
path('admin/', admin.site.urls),
path('', HomeView.as_view(), name='home'),
path('influencers/', InfluencersPageView.as_view(), name='influencers'),
path('carrier/', CarrierFormView.as_view(), name='carrier'),
]
1 个回答
1
因为你只提供了一个模板,我猜测你在提到的所有视图中都在使用同一个表单。你的表单操作指向了同一个网址 home
,在 <form action="{% url 'home' %}" role="form" class="php-email-form" method="post"> {% csrf_token %}
这里。你需要根据你想让表单处理的视图来相应地更改这个网址。