Google App Engin的基本唯一ModelForm字段

2024-09-29 19:23:06 发布

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

我不关心并发问题。在

构建独特的表单域相对容易:

from django import forms

class UniqueUserEmailField(forms.CharField):
    def clean(self, value):
      self.check_uniqueness(super(UniqueUserEmailField, self).clean(value))

    def check_uniqueness(self, value):
        same_user = users.User.all().filter('email', value).get()
        if same_user:
          raise forms.ValidationError('%s already_registered' % value)

所以可以随时添加用户。编辑现有用户很棘手。此字段不允许保存有其他用户电子邮件的用户。同时,它不允许用相同的电子邮件保存用户。您使用什么代码将具有唯一性检查的字段放入ModelForm?在


Tags: 用户fromselfclean表单value电子邮件def
1条回答
网友
1楼 · 发布于 2024-09-29 19:23:06

快速而肮脏的方法是:

  1. 检查唯一性类方法
  2. 在ModelForm中使用自定义字段检查,如下所示:

    class User(forms.ModelForm):    
        email = forms.EmailField()    
    def clean_email(self):
        data = self.cleaned_data['email']
        original = self.instance.email
        if original == data:
            return data
        UniqueUserEmailField.check_uniqueness(data)
        return data
    

更好的选择?在

相关问题 更多 >

    热门问题