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">&times;</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>
Вернуться на верх