【发布时间】:2021-01-07 16:28:49
【问题描述】:
您好,我有这两个模型,并且我有与第一个模型相关的 ForeignKey 字段。
class WELLMod(models.Model):
WellID = models.CharField(max_length=15,unique=True)
Perimetre = models.CharField(max_length=50)
post_date = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User,on_delete=models.CASCADE)
def __str__(self):
return self.WellID
def get_absolute_url(self):
return reverse('WellDt', args=[self.pk])
class Meta:
ordering = ('-post_date',)
class DSTMod(models.Model):
WellID = models.ForeignKey(WELLMod ,to_field='WellID', on_delete=models.CASCADE)
TotalDpt = models.CharField(max_length=15)
post_date = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User,on_delete=models.CASCADE)
def __str__(self):
return self.WellID_id
def get_absolute_url(self):
return reverse('WellDt', args=[self.WellID_id.pk])
class Meta:
ordering = ('-post_date',)
#formes.py
class WELLForm(forms.ModelForm):
WellID = forms.CharField(label='Well ID',max_length=15)
Perimetre = forms.ChoiceField(label='Perimetre',max_length=15,required =False)
class Meta:
model= WELLMod
fields=['WellID','Perimetre']
class DSTMForm(forms.ModelForm):
WellID_id = forms.CharField(label='Well Name',max_length=15)
TotalDpt = forms.CharField(label='Total Depth(m)',max_length=15,required =False)
class Meta:
model= DSTMod
fields=['WellID','TotalDpt']
Views.py
class PostCreateWell(LoginRequiredMixin, CreateView):
model = WELLMod
template_name = 'Home/WELLINFO/Add_well.html'
form_class = WELLForm
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
class PostCreateDST(LoginRequiredMixin, CreateView):
model = DSTMod
template_name = 'Home/WELLINFO/WellDST/Add_DST.html'
form_class = WELLForm
def form_valid(self, form):
form.instance.author = self.request.user
return super().form_valid(form)
url.py
path('Add_well/', views.PostCreateWell.as_view(), name='NEWWELL'),
path('Add_Dst/', views.PostCreateDST.as_view(), name='WellDST'),
我的模板是
<form method="POST">
{% csrf_token %}
<!-- form from views.py-->
<div class="border p-2 mb-3 mt-3 border-secondary">
<h3>Drill Stem Test</h3>
<div class="form-row">
<div class="form-group col-md-4 mb-0">{{ form.WellID|as_crispy_field }}</div>
<div class="form-group col-md-4 mb-0">{{ form.TotalDpt|as_crispy_field }}</div>
</div>
</div>
<input class="btn btn-success mb-4" type="submit" value="ADD WELL">
</form>
问题是当我添加一个井时它运行良好,但是当添加 DSTMOD 时它不会保存我的数据并没有错误地转到同一页面?为什么以及如何解决这个问题? 注意,当我使用管理工具添加数据时,效果很好。
【问题讨论】:
-
我在 forms.py class Meta: model= DSTMod fields=['WellID_id','TotalDpt'] 在模板 {{ form.WellID_id|as_crispy_field }} 中进行了更改,它保存数据但不是 WellID_id,它是空的???
标签: django-models django-forms django-views foreign-keys django-crispy-forms