无法将薪资输入字段保存到Djang中的模型

2024-03-28 21:11:18 发布

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

我有一个登记表,允许用户输入他们的工资,并将其保存在我的模型中。我使用Django-money来存储salary字段。但是,在提交表单后,出现以下错误:

Object of type Money is not JSON serializable

这是我的代码:

型号.py:

from phonenumber_field.modelfields import PhoneNumberField
from djmoney.models.fields import MoneyField 

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete = models.CASCADE, primary_key=True, related_name = 'register')
    salary = MoneyField(max_digits=14, decimal_places=2, default_currency='USD')

视图.py:

def register(request):
    if request.method == 'POST':
        form = RegisterForm(request.POST)
        if form.is_valid():
            form.save()
            return redirect("login") #place login here
    else:
        form = RegisterForm()
    return render(request, 'myapp/signup.html', {'form': form})

表单.py:

class ProfileRegisterForm(forms.ModelForm): 
    class Meta:
        model = Profile
        fields = ['salary']

序列化程序.py:

class PrSerializer(serializers.ModelSerializer):
    salary = MoneyField(max_digits=14, decimal_places=2, read_only = True)
    class Meta:
        model = Profile
        fields = ('salary')

稍后我将使用API,但我总是得到上面显示的错误。如何避免错误并将薪资数据保存到模型中?你知道吗


Tags: frompy模型importform表单fieldsis