Как мне соединить формы с моделями в Django? - PullRequest
0 голосов
/ 16 марта 2020

Я только начал изучать Django, и у меня есть вопросы, касающиеся форм и моделей.

Итак, я пытаюсь создать в упрощенной форме: пользователь вводит свою базовую c информацию - номер телефона, учетную запись instagram, учетную запись facebook и т. Д. - затем данные хранится в базе данных и отображается динамически для пользователя. Так же, как социальные сети. Но у меня путаница с формами и моделями.

Сначала я создал формы, как показано ниже (forms.py):

from django import forms
from django.contrib.auth.models import User

class InputUserInfo(forms.Form):
    phone = forms.CharField(max_length=20)
    instagram = forms.CharField(max_length=20)
    facebook = forms.CharField(max_length=20)
    # and so on. Don't mind about which field to use.

, затем у меня есть файл views.py , как показано ниже:

from django.shortcuts import render, redirect
from .forms import InputUserInfo

def inputuserinfo(response):
    if response.method == "POST":
        form = InputUserInfo(response.POST)
        if form.is_valid:
            form.save()
        return redirect('home')
    else:
        form = InputUserInfo()
    return render(response, 'inputuserinfo.html', {'form' : form }

, тогда у меня есть файл inputuserinfo. html, как показано ниже:

{% extends 'base.html' %}
{% block content %}
<form method="post" action='/inputuserinfo/'>
    {% csrf_token %}
    {{form}}
    <button type='submit'>Done</button>
</form>
{% endblock%}

Теперь проблема в том, Я не знаю что делать с моими models.py. Я не знаю, какой код написать в models.py для хранения входных данных в моей базе данных.

Я был бы очень признателен за вашу помощь, ребята. :)

Ответы [ 2 ]

1 голос
/ 16 марта 2020

похоже, что вы пропустили ModelForm. Есть ли причина, по которой вы не используете представления на основе классов. Это было бы намного проще?

Ваша ModelForm будет выглядеть примерно так

    class InputUserForm(forms.ModelForm):
'''user form to create the user profile'''
class Meta:
    model = InputUserInfo
    fields = '__all__'
1 голос
/ 16 марта 2020

В Django модель представляет собой интерфейс для конкретной базы данных. Он создаст и выдаст для вас SQL запросов.

A form - это интерфейс HTTP "GET" и "POST". Он может генерировать HTML для вставки в тэг формы (но не предоставлять сам тэг), и они могут интерпретировать данные, представленные хосту из такой формы. Вместо того, чтобы самим манипулировать данными HTML, вы позволяете объекту Form выполнять тяжелую работу, приходя и уходя.

Django предоставляет множество удобных ярлыков, таких как ModelForm, это форма , которая может основываться на содержимом модели. Она "быстро создаст приемлемую форму", когда вы спешите ... когда вы часто бывают. И он может делать такие вещи, как save () напрямую, потому что знает, в какую модель вы хотите сохранить данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...