В 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
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
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

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