В django, как добавить данные из таблицы html без использования form.py

Как сохранить данные из таблицы html в django без использования form.py. В настоящее время я создаю таблицу в html с помощью кнопки добавления, и после добавления всех строк в таблицу я хочу сохранить ее, но я не использую form.py только view.py, html, model.py мой код просмотра ниже просмотры.py

 school_name = request.POST['school_name']
 m_pass_out = request.POST['m_pass_out']
 medicalschool = MedicalSchool(school_name=school_name, m_pass_out=m_pass_out)
 medicalschool.save()

Код моей модели ниже модели.py

class DoctorProfile(models.Model):
user_guid = models.OneToOneField(
    'EgdEradUsers', models.DO_NOTHING, db_column='user_guid', primary_key=True)
doctor_guid = models.UUIDField(unique=True)
featured_doctor_id = models.BooleanField()
primary_speciality = models.ForeignKey(DSpecialtyType, models.DO_NOTHING)
# This field type is a guess.
secondary_speciality = models.TextField(blank=True, null=True)
years_experience = models.IntegerField()
# This field type is a guess.
education = models.TextField(blank=True, null=True)
license_number = models.CharField(max_length=1000, blank=True, null=True)
npi_number = models.CharField(max_length=1000, blank=True, null=True)
revalidation_cme = models.IntegerField(blank=True, null=True)
# This field type is a guess.
states_to_practice = models.TextField(blank=True, null=True)
# This field type is a guess.
board_certification = models.TextField(blank=True, null=True)
# This field type is a guess.
honors_awards_recognition = models.TextField(blank=True, null=True)
# This field type is a guess.
publications = models.TextField(blank=True, null=True)
description = models.CharField(max_length=1000, blank=True, null=True)
# This field type is a guess.
hospital_privileges = models.TextField(blank=True, null=True)
phone_code = models.IntegerField(blank=True, null=True)
primary_contact_number = models.CharField(max_length=45)
phone_code2 = models.IntegerField(blank=True, null=True)
secondary_contact_number = models.CharField(
    max_length=45, blank=True, null=True)
resume_url = models.CharField(max_length=1000, blank=True, null=True)
avatar_url = models.CharField(max_length=1000, blank=True, null=True)
additional_comments = models.CharField(
    max_length=1000, blank=True, null=True)

class Meta:
    managed = True
    db_table = 'doctor_profile'

class MedicalSchool(models.Model):
school_name = models.CharField(max_length=100)
m_pass_out = models.DateField(max_length=100)
doctor_profile = models.ForeignKey(DoctorProfile, on_delete=models.CASCADE)
created_at = models.DateTimeField()
updated_at = models.DateTimeField(blank=True, null=True)

class Meta:
    db_table = 'medical_school'

Мой html-код ниже HTML

                    <div class = "container-lg">
                    <div class = "table-responsive">
                        <div class = "table-wrapper">
                            <div class = "table-title">
                                <div class = "row">
                                    <div class = "col-sm-8">
                                        <h2>Medical School</h2>
                                    </div>
                                    <div class = "col-sm-4">
                                        <button type = "button" id = "medical" class = "btn btn-info add- 
                                          new"><i class = "fa fa-plus"></i> Add New</button>
                                    </div>
                                </div>
                            </div>
                            <table id = "medicaltable" class = "table table-bordered">
                                <thead>
                                    <tr>
                                        <th>Name of School</th>
                                        <th>Year of Graduation</th>
                                        <th>Actions</th>
                                    </tr>
                                </thead>
                                <tbody>
                                    <tr>
                                        <td  id = "medicaltext" name = "school_name"></td>
                                        <td  id = "medicaldate"  name = "m_pass_out"></td>
                                        <td>
                                            <a id = "medicaladd" class = "add" title = "Add" data- 
                                          toggle = "tooltip"><i class = "material-icons">&#xE03B;</i></a>
                                            <a id = "medicaledit" class = "edit" title = "Edit" data- 
                                          toggle = "tooltip"><i class = "material-icons">&#xE254;</i></a>
                                            <a id = "medicaldelete" class = "delete" title = "Delete" data- 
                                          toggle = "tooltip"><i class = "material-icons">&#xE872;</i></a>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>

Нет смысла не использовать форму. Вам не нужно отображать HTML-форму для работы с формой Django. Идея формы Django заключается в проверке и очистке данных и удалении большого количества шаблонной логики.

Willem Van Onsem 20.12.2020 19:21

Я не использовал форму для остальной части своего приложения; вот почему я стараюсь избегать формы

saurabh 20.12.2020 19:23

Но это не звучит как хороший аргумент. Представьте, что вам нужен первичный ключ школы, но почему-то некоторые школы не разрешены, с формой Django, которую легко проверить (на самом деле вам не нужно писать эту логику, это просто изменение queryset=.... Делая это вручную, у вас в конечном итоге будет большая кодовая база, и если вы позже передумаете, потребуется много усилий, чтобы изменить эту кодовую базу.

Willem Van Onsem 20.12.2020 19:27

Могу ли я использовать форму только здесь, чтобы мне не нужно было переписывать весь код только для одной таблицы??

saurabh 20.12.2020 19:34

Поделитесь моделью DoctorProfile тоже

Reza GH 20.12.2020 19:50

Только что добавил модель профиля доктора

saurabh 20.12.2020 19:58

Я просто хочу, чтобы имя вашего профиля врача отображалось в формате html. я думаю, вы можете сделать это сами. я прокомментировал, где вы должны изменить

Reza GH 20.12.2020 20:01
Почему в Python есть оператор &quot;pass&quot;?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
Массив зависимостей в React
Массив зависимостей в React
Все о массиве Dependency и его связи с useEffect.
0
7
426
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете получить доступ к каждому вводу html-формы по их имени в поле зрения. см. ниже код:

Модели

from django.db import models
from django import forms

class MedicalSchool(models.Model):
    school_name = models.CharField(max_length=100)
    m_pass_out = models.DateField(max_length=100)
    doctor_profile = models.ForeignKey(DoctorProfile, on_delete=models.CASCADE)
    created_at = models.DateTimeField()
    updated_at = models.DateTimeField(blank=True, null=True)

class Meta:
    db_table = 'medical_school'

class MedicalSchoolForm(forms.ModelForm):
    class Meta:
        model = MedicalSchool
        fields = ['school_name', 'm_pass_out', 'doctor_profile']

Просмотры

from django.contrib import messages
from django.shortcuts import redirect, render
from . import models

def MedicalSchool(request):
    url = request.META.get('HTTP_REFERER')  # get last url
    if request.method == 'POST':
        form = models.MedicalSchoolForm(request.POST) # access to ModelForm
        if form.is_valid():
        data = models.MedicalSchool() # create a instance of your Model
        data.school_name = form.cleaned_data['school_name'] # 'school_name' is the name that we specified in html form input
        data.m_pass_out = form.cleaned_data['m_pass_out'] # 'm_pass_out' is the name that we specified in html form input
        data.doctor_profile_id = form.cleaned_data['doctor_profile'] # 'doctor_profile' is the name that we specified in html form input
        data.save()
        return redirect(url)
    else:
        messages.warning(request, form.errors)
        return redirect(url)
    context = {'DoctorProfile': models.DoctorProfile.objects.all()}
return render(request, 'MedicalSchool.html', context)

URL-адреса

from django.urls import path
from . import views

app_name = 'School'
urlpatterns = [
    path('', views.MedicalSchool, name='MedicalSchool'),
    ...
]

Медицинская школа.html

<form action = "{% url 'School:MedicalSchool' %}" method = "POST"> 
{% csrf_token %}

<input type = "text" name = "school_name" placeholder = "school name" required>
<input type = "text" name = "m_pass_out" placeholder = "m pass out" required>

<select name='doctor_profile'>
    {% for dr in DoctorProfile %}
        <option name = "doctor_profile" value = "{{ dr.id }}">{{ dr.title}}</option>  <!-- Match your code with {{ dr.title}} -->
    {% endfor %}
</select>

<button type = "submit"> Submit </button>

</form>
дайте мне знать, если возникла проблема

В школе будет несколько школ, поэтому мне нужно сохранить несколько строк

saurabh 20.12.2020 20:02

О какой модели вы говорите?

Reza GH 20.12.2020 20:03

Один врач мог учиться в нескольких медицинских школах, поэтому мне нужно сохранить информацию об 1 или нескольких медицинских школах от этого конкретного врача.

saurabh 20.12.2020 20:59

В модели MedicalSchool поле doctor_profile имеет внешний ключ к модели DoctorProfile. поэтому форму MedicalSchool можно просто сохранить для конкретной модели DoctorProfile. этот вопрос относится к форме MedicalSchool, а не к форме DoctorProfile. истинный?

Reza GH 20.12.2020 21:08

Если этот вопрос ответил, и у вас есть другой вопрос. вы можете открыть другой вопрос и закрыть этот

Reza GH 20.12.2020 21:10

Правильный этот вопрос для медицинской школы, и я подумал, могу ли я добавить данные из таблицы в модель, не используя форму

saurabh 21.12.2020 14:43

Если вы хотите, чтобы ваши данные были предоставлены пользователем, вы должны использовать форму

Reza GH 21.12.2020 16:08

Другие вопросы по теме