无法从两个窗体保存数据

2024-09-29 01:37:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图获得卖家信息,用户名,密码,姓名,手机号码和地址。我使用User获取用户名和密码,通过OneToOneField关系将用户名连接到我的模型,然后保存信息

我制作了一个名为SellerDetails的模型,它从OneToOneField获取user字段,其中包含user和rest。所有详细信息如下所示:

#models.py
from django.db import models
from django.contrib.auth.models import User

# Create your models here.
class SellerDetails(models.Model):
    """docstring for SellerDetails."""
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    name = models.CharField(max_length=128, null = True)
    address = models.CharField(max_length=256)
    mobile_number = models.IntegerField(primary_key=True)
    def __str__(self):
        return self.user.username

然后我在表格里做了两个表格

#forms.py
from django import forms
from django.contrib.auth.models import User
from avkara.models import SellerDetails, VendorDetails

class UserForm(forms.ModelForm):
    password = forms.CharField(widget = forms.PasswordInput())
    class Meta:
        model = User
        fields = ('username', 'password')

class SellerDetailsForm(forms.ModelForm):
    """docstring for SellerDetailsForm."""
    class Meta:
        model = SellerDetails
        fields = ('name','address','mobile_number')


#Then I tried established a relation while saving the form

#views.py
def Signup_seller(request):
    seller_registered = False

    if request.method == "POST":
        user_form = UserForm(data = request.POST)
        user_details = SellerDetailsForm(data = request.POST)

        if user_form.is_valid() and user_details.is_valid():
            seller = user_form.save()
            seller.set_password(seller.password)

            seller.save()

            #saving user_details now
            other_details = user_details.save(commit= False)
            other_details.user = seller
            other_details.save()

            seller_registered = True

    else:
        user_form = UserForm()
        user_details = SellerDetailsForm()

    return render(request, 'avkara/signup_seller.html',{'seller_registered': seller_registered , 'user_form' : user_form, 'user_details' : user_details})


#Then I tried serving both forms through Html form. Here is my html
#signup_seller.html
<div class="container jumbotron">
      <h2>Sign up</h2><br><br><br>
      <form class="form-horizontal" method="POST">
          {% csrf_token %}
          {{ user_form.as_p }}
          {{ user_details.as_p }}
        <input type="submit" value="Submit">
      </form>
    </div>

#The desired out should be Thank you for registering but I get following error 
IntegrityError at /avkara/signup_seller
NOT NULL constraint failed: avkara_sellerdetails.password

#This is error it is showing

F:\Webpage\python\techforstock\avkara\views.py in Signup_seller
other_details.save() <!--error part --!>

我已经做了几个小时了,但是运气不好,有人能帮我解决这个问题吗

我想用户名和密码注册在用户部分和其他信息保存在Sellerdetails当我打开管理界面,但它应该与特定的用户名


Tags: fromimportformmodelsrequestformspassworddetails