【问题标题】:Unexpected keyword argument意外的关键字参数
【发布时间】:2021-10-02 18:37:47
【问题描述】:

这是我的模型 型号

from Account.models import User
from django.db import models

class Seller(models.Model):
    seller = models.OneToOneField(User, on_delete = models.CASCADE)
    email = models.EmailField(max_length = 90, unique = True)
    country = models.CharField(max_length = 60)
    phone = models.CharField(max_length= 20, unique = True, blank = True, null = True)
    address = models.TextField()
    zipcode = models.CharField(max_length = 10)

表格

from django import forms
from django.contrib.auth.forms import UserCreationForm
from django.db import transaction
from .models import Seller
from Account.models import User

class SellerCreationForm(UserCreationForm):
    name = forms.CharField(required = True)
    email = forms.EmailField(required = True)
    phone = forms.CharField(required = False)
    country = forms.CharField(required = True)
    address = forms.CharField(required = True)
    zipcode = forms.CharField(required = True)

    class Meta(UserCreationForm.Meta):
        model = User

    @transaction.atomic
    def save(self):
        user = super().save(commit=False)
        user.is_seller = True
        user.name = self.cleaned_data.get('name')
        user.save()
        seller = Seller.objects.create(user=user)
        seller.email = self.cleaned_data.get('email')
        seller.phone = self.cleaned_data.get('phone')
        seller.country = self.cleaned_data.get('country')
        seller.address = self.cleaned_data.get('address')
        seller.zipcode = self.cleaned_data.get('zipcode')
        seller.save()
        return user

观看次数

from django.shortcuts import render, redirect
from django.views.generic import CreateView
from .forms import SellerCreationForm
from django.contrib.auth.forms import AuthenticationForm
from Account.models import User

class RegisterSeller(CreateView):
    model = User
    form_class = SellerCreationForm
    template_name = 'registration/registerseller.html'

    def form_valid(self, form):
        user = form.save()
        login(self.request, user)
        return redirect('/')

我尝试创建一个具有多种用户类型且所有用户具有不同功能的项目。 代码中的所有内容都运行良好,但每当我尝试注册新用户时,都会出现错误。 它说 Seller() 得到了一个意外的关键字参数“用户”

【问题讨论】:

    标签: python django django-models django-views django-forms


    【解决方案1】:

    SellerUserForeignKey 已命名为seller,而不是seller`。因此,您可以构造一个对象:

    seller = Seller.objects.create(
        seller=user,
        email=self.cleaned_data['email']
        phone = self.cleaned_data['phone']
        country = cleaned_data['country']
        address = self.cleaned_data['address']
        zipcode = self.cleaned_data['zipcode']
    )

    但也许最好将该字段重命名为:

    from Account.models import User
    from django.db import models
    
    class Seller(models.Model):
        user = models.OneToOneField(User, on_delete = models.CASCADE)
        # ⋮

    注意:通常使用settings.AUTH_USER_MODEL [Django-doc] 引用用户模型比直接使用User model [Django-doc] 更好。更多信息可以查看referencing the User model section of the documentation

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 1970-01-01
      • 2021-04-24
      • 2016-11-12
      • 2020-09-12
      • 2017-06-29
      • 1970-01-01
      相关资源
      最近更新 更多