首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AttributeError at /service 'Orderbook‘对象没有属性'save’。,保存是一个函数fm.save()

AttributeError at /service 'Orderbook‘对象没有属性'save’。,保存是一个函数fm.save()
EN

Stack Overflow用户
提问于 2022-03-31 13:05:20
回答 2查看 46关注 0票数 0

得到一个属性错误,将函数显示为错误或属性。我尝试过解决这个问题,但是它不起作用,我删除了所有迁移的文件,并再次运行python manage.py makemigrations和admin.py命令,但仍然在admin.py中显示相同的错误代码。

代码语言:javascript
复制
# Register your models here.
from django.contrib import admin
from .models import *
# Register your models here.
@admin.register(User)
class UserAdmin(admin.ModelAdmin):
    list_display=('user_id','username','password','name','email_id','contact','address')

@admin.register(Orders)
class OrdersAdmin(admin.ModelAdmin):
    list_display=('oid','parcel_info','parcel_qty','parcel_weight','unit_mass','desti')

views.py中的代码

代码语言:javascript
复制
from django.shortcuts import redirect, render
from django.contrib.auth import authenticate,login
from user.forms import *
from django.contrib import messages
from user.models import *

from user.models import Orders

# Create your views here.
def home(request):
    return render(request,'home.html')

def login(request):
    if request.method=='POST':
        username=request.POST['username']
        password=request.POST['password']
        userm=authenticate(user=username,passe=password)
        if userm is not None:
            login(request,userm)
            messages.success(request,"You have login successfully...")
            return redirect("home")
        else:
            messages.error(request,"Invalid Username or password...")
            return redirect("login")
    else:
        return render(request,'base.html')

def register(request):
    if request.method=='POST':
        fm=Userregistration(request.POST)
        if fm.is_valid():
            fm.save()
    else:
        fm=Userregistration()
        return render(request,'register.html',{'form':fm})

def Orderreg(request):
    if request.method=='POST':
        fm=Orderbook(request.POST)
        if fm.is_valid():
            fm.save()
            fm=Orderbook()
        return redirect('service')
    else:
        fm=Orderbook()
        u=Orders.objects.all()
    return render(request,'service.html',{'form':fm,'us':u})

def contact(request):
    return render(request,'contact.html')


def about(request):
    return render(request,'about.html')

HTML代码

代码语言:javascript
复制
{% extends 'base.html' %}
{% block body %}
{% load static %}
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <title></title>
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
    </head>
    <body>
        <form action="" method="POST">
            {% csrf_token %}
            <section class="" style="background-color: #b6977d;">
                <div class="container h-200">
                  <div class="row d-flex justify-content-center align-items-center h-100">
                    <div class="col-lg-12 col-xl-11">
                      <div class="card text-black my-5" style="border-radius: 35px;">
                        <div class="card-body p-md-5">
                          <div class="row justify-content-center">
                            <div class="col-md-10 col-lg-6 col-xl-5 order-2 order-lg-1">
              
                              <p class="text-center h1 fw-bold mb-5 mx-1 mx-md-4 mt-4">Place order</p>
                                
                              {{form.as_p}}
                              <input type="submit" class="btn btn-success btn-block" value="Order">
                            </div>
                            <div class="col-md-10 col-lg-6 col-xl-7 d-flex align-items-center order-1 order-lg-2">
              
                              <img src="/static/user-registration-removebg-preview.png" class="img-fluid" alt="Sample image">
              
                            </div>
                          </div>
                        </div>
                      </div>
                    </div>
                  </div>
                </div>
              </section>
        <script src="{% static 'js/jquery.js' %}"></script>
        <script src="{% static 'js/poper.js' %}"></script>
        <script src="{% static 'js/bootstrap.js' %}"></script>
    </body>
</html>

{% endblock body %}

forms.py中的代码

代码语言:javascript
复制
from django import forms
from user.models import *

class Userregistration(forms.ModelForm):
    class Meta:
        model=User
        fields=['username','password','name','email_id','contact','address']
        widgets={
            'username':forms.TextInput(attrs={'class':'form-control'}),
            'password':forms.PasswordInput(attrs={'class':'form-control'}),
            'name':forms.TextInput(attrs={'class':'form-control'}),
            'email_id':forms.EmailInput(attrs={'class':'form-control'}),
            'contact':forms.TextInput(attrs={'class':'form-control'}),
            'address':forms.TextInput(attrs={'class':'form-control'}),
        }

class Orderbook(forms.Form):
    parcel_info=forms.CharField()
    parcel_qty=forms.DecimalField()
    parcel_weight=forms.DecimalField()
    unit_mass=forms.CharField()
    desti=forms.CharField()

models.py中的代码

代码语言:javascript
复制
from django.db import models

# Create your models here.
class User(models.Model):
    user_id = models.IntegerField(primary_key=True)
    username = models.CharField(max_length=20)  
    password = models.CharField(max_length=15)  
    name = models.CharField(max_length=20)  
    email_id = models.EmailField(max_length=100) 
    contact = models.IntegerField(default=1234567890)
    address = models.CharField(max_length=30) 
    
class Orders(models.Model):
    oid = models.IntegerField(primary_key=True)
    parcel_info = models.CharField(max_length=100)
    parcel_qty=models.IntegerField(default=1)
    parcel_weight=models.IntegerField(default=1.5)
    unit_mass=models.CharField(max_length=10,default="kg")
    desti=models.CharField(max_length=100)

urls.py中的代码

代码语言:javascript
复制
from django.urls.conf import path
from user import views


urlpatterns = [
    path('',views.home,name='home'),
    path('home',views.home,name='home'),
    path('login',views.login,name='login'),
    path('register',views.register,name='register'),
    path('about',views.about,name='about'),
    path('service',views.Orderreg,name='service'),
    path('contact',views.contact,name='contact'),
]
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-03-31 14:48:31

问题是您的Orderbook表单不是ModelForm,它没有保存方法,所以只需用下面的代码替换它。

代码语言:javascript
复制
class Orderbook(forms.ModelForm):
    class Meta:
        model = Orders
        fields = '__all__'
票数 1
EN

Stack Overflow用户

发布于 2022-03-31 13:15:00

您的Orderbook是一个表单,您不能保存表单,您需要保存它的数据

代码语言:javascript
复制
def Orderreg(request):
if request.method=='POST':
    fm=Orderbook(request.POST)
    if fm.is_valid():
       #your variable here which you pass
       variable = fm.cleaned_data['variable']

然后,您需要使用这个变量来查询一个对象,只有这样,您才能保存()这个对象。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71693015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档