python - 比较表单字段值和查询集值的值

标签 python django django-forms

在我的应用程序中,注册表单如下所示:

Forms.py

class EmployeeSignUpForm(UserCreationForm):
    company = forms.ModelChoiceField(queryset=Company.objects.all(), required=True, label='Select Company')
    c_code = forms.IntegerField(required=True)    
    class Meta(UserCreationForm.Meta):
        model = User

    @transaction.atomic
    def save (self):
        user = super().save(commit=False)
        user.is_employee = True
        user.save()

        c_company = self.cleaned_data['company'][0]

        employee = Employee.objects.create(user=user, company=c_company)    
        return user

如何将c_code与models.py中的company_code进行比较,并仅在两者匹配时保存表单,否则会引发错误?

模型.py

class Company(models.Model):
    company_name = models.CharField(max_length=255, default=0)
    company_email = models.EmailField(max_length=255, default=0)
    company_phone = models.CharField(max_length=255, default=0)
    company_code = models.IntegerField(default=0)

    def __str__ (self):
        return self.company_name

最佳答案

你可以这样做:

def clean_c_code(self):
    c_code = int(self.cleaned_data['c_code'])
    try:
        Company.objects.get(c_code=c_code)
    except Company.DoesNotExist:
        raise ValidationError("Don't save")

关于python - 比较表单字段值和查询集值的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58298910/

相关文章:

python - 是否可以确定性地设置 Debian 系统?

Python:QTableWidget 中的数值排序

python - Gtk3:设置固定的窗口大小(小于子部件请求的大小)

python - django-allauth 从 iOS 设备使用 Facebook token 登录

python - 使用 django channel 保存数据库更改

python - 从 django 模型传递对象的 ID

python - OneToThree django模型

python - os.path.join() 是如何工作的?

Django 表单有选择但也有自由文本选项?

python - django-crispy-forms 的替代品