Django форма с API сторонних производителей
Я новичок в django и веб-разработке.
У меня возникли проблемы с работой django с API сторонних разработчиков и я хотел бы получить помощь.
.
Я хочу сделать следующее: сказать django, чтобы он одновременно отправлял API для хранения информации в момент отправки формы. (тем временем сохраняя данные и в django и в другом месте).
Возможно ли это сделать? Также в UpdateView?
Ниже приведен мой текущий код, он хорошо работает с django в части создания данных, однако я не уверен, где разместить сторонние API в них.
- models.py
class DocumentingJob(models.Model):
class TaskType(models.TextChoices):
MACHINE_LEARNING = ("machine_learning_task", "ml_task")
RULE = ("rule_task", "r_task")
name = models.CharField(max_length=100, verbose_name="document_task", default="Job")
description = models.TextField(verbose_name="description of task")
is_multi_label = models.BooleanField(default=False)
job_type = models.CharField(max_length=100, choices=TaskType.choices, default=TaskType.RULE)
create_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now=True)
task_id = models.UUIDField(default=uuid.uuid1, unique=True, editable=False)
create_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
def __str__(self):
return f"{self.name} ({self.get_job_type_display()})"
def get_absolute_url(self):
return reverse('documenting_jobs:job-detail', kwargs={'pk': self.pk})
- views.py
class IndexAndCreateView(LoginRequiredMixin, generic.CreateView):
model = DocumentingJob
template_name = "documenting_jobs/index.html"
form_class = DocumentingJobForm
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['documenting_jobs'] = self.model.objects.order_by('-create_time')
return context
def form_valid(self, form):
form.instance.create_time = self.request.user
return super().form_valid(form)
- forms.py
class DocumentingJobForm(forms.ModelForm):
class Meta:
model = DocumentingJob
fields = '__all__'
exclude = ['create_by', 'is_multi_label']
widgets = {
'name': forms.TextInput(attrs={'class': 'form-control',
'value': f'Jab'}),
'description': forms.Textarea(attrs={'class': 'form-control'}),
'job_type': forms.Select(attrs={'class': 'form-control'}),
}
- index.html: часть формы
<div class="modal fade" id="jobCreateModal" tabindex="-1" aria-labelledby="jobCreateModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="jobCreateModalLabel">建立任務</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<form method="post" class="">{% csrf_token %}
<div class="modal-body">
{{ error }}
{% for field in form %}
<div class="form-group">
{{ field.label_tag }}
{{ field }}
{{ field.errors }}
</div>
{% endfor %}
</div>
<div class="modal-footer">
<input type="hidden" name="next" value="{{ next }}">
<input type="submit" class="btn btn-primary" value="送出">
</div>
</form>
</div>
</div>
</div>