Django ImportError: невозможно импортировать имя 'ModelForm' - PullRequest
0 голосов
/ 05 июня 2018

I have fixed the error from given question and now I am getting an error on command promp Я в значительной степени новичок в Django и пытаюсь создать поля, чтобы добавить новый фильм в существующую модель.Он показывает ошибку: ImportError: невозможно импортировать имя 'ModelForm'

#forms.py file: 
from django import forms
from django import ModelForm
from .models import Movie


class MovieForm(ModelForm):
    class Meta:
        model = Movie
        fields = ['genre', 'price', 'rent_time', 'flag']


class CustForm(forms.Form):
    f_name = forms.CharField(label='First_Name', max_length=50)
    l_name = forms.CharField(label='Last_Name', max_length=50)
    address = forms.CharField(label='Address', max_length=125)
    cell = forms.IntegerField(label='Cell')
#------------------------------------------------------------------------
#models.py file:
from django.db import models
from django.forms import ModelForm


class Customer(models.Model):
    f_name = models.CharField(max_length=50)
    l_name = models.CharField(max_length=50)
    address = models.CharField(max_length=125)
    cell = models.IntegerField(blank=True, null=True)


class Movie(models.Model):
    genre = models.CharField(max_length=50)
    price = models.FloatField(blank=True, null=True)
    rent_time = models.DateTimeField(auto_now_add=True, blank=True)
    flag = models.BooleanField(default=True)
    user_id = models.ForeignKey('Customer', on_delete=models.SET_NULL,         
null=True)
#------------------------------------------------------------------------
#views.py file:
from django.shortcuts import render
from .models import Customer, Movie
# from django.http import HttpResponseRedirect
from .forms import MovieForm, CustForm


def dashboard(request):
    customer_data = Customer.objects.all()
    context = {'Customer_List': customer_data}
    return render(request, 'movie_renting_app/home.html', context)


def movie_list(request):
    movie_data = Movie.objects.all()
    context = {"Movie_List": movie_data}
    return render(request, 'movie_renting_app/all_movies.html', context)


def rented_movies(request):
    rented_movie = Movie.objects.filter(flag=True)
    context = {"Rented_Movies_List": rented_movie}
    return render(request, 'movie_renting_app/rent.html', context)


def add_movies(request):
    if request.POST:
        form = MovieForm()
        print(request)
        # return movie_list(request)
    else:
        form = MovieForm()
        return render(request, 'movie_renting_app/new_movie.html',             
{'form': form})


def add_customer(request):
    if request.POST:
        form = request.POST
        print(request)
        c = Customer(f_name=form['f_name'], l_name=form['l_name'],     
address=form['address'], cell=form['cell'])
        c.save()
        return dashboard(request)
    else:
        form = CustForm()
        return render(request, 'movie_renting_app/new_customer.html', 
{'form': form})

def update_customer_info(request):
    pass


def available_list(request):
    pass

Я получаю сообщение об ошибке в командной строке.Я понятия не имею, что происходит с моим кодом.Я пробовал разные способы импортировать ModelForm, но он отображал одно и то же сообщение об ошибке.Я использую Django 2.0 и Python 3.6

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Ошибка, вероятно, ваша вторая строка в forms.py.ModelForm находится в django.forms и не может быть импортировано из django.Попробуйте вместо этого:

from django.forms import ModelForm

Или измените class MovieForm(ModelForm): на class MovieForm(forms.ModelForm): и удалите ModelForm строку импорта.

0 голосов
/ 05 июня 2018

Класс ModelForm находится в формах Django, поэтому вы можете импортировать его, как показано ниже.

from django.forms import ModelForm

или использовать его непосредственно при создании подкласса класса вашей формы

class CustomForm(forms.ModelForm):
    # your form fields here
    pass

для получения дополнительной информации оОбразцы моделей см. django docs

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