def validate(self, data): # Validate uniqueness of (rack, position, face) since we omitted the automatically-created validator from Meta. if data.get('rack') and data.get('position') and data.get('face'): validator = UniqueTogetherValidator(queryset=Device.objects.all(), fields=('rack', 'position', 'face')) validator.set_context(self) validator(data) # Enforce model validation super(WritableDeviceSerializer, self).validate(data) return data
def validate(self, data): # Validate uniqueness of (site, facility_id) since we omitted the automatically-created validator from Meta. if data.get('facility_id', None): validator = UniqueTogetherValidator(queryset=Rack.objects.all(), fields=('site', 'facility_id')) validator.set_context(self) validator(data) # Enforce model validation super(WritableRackSerializer, self).validate(data) return data
def validate(self, data): # Validate uniqueness of name if one has been provided. if data.get('name', None): validator = UniqueTogetherValidator(queryset=Secret.objects.all(), fields=('device', 'role', 'name')) validator.set_context(self) validator(data) # Enforce model validation super(WritableSecretSerializer, self).validate(data) return data
def validate(self, data): # Validate uniqueness of name and slug if a site has been assigned. if data.get('site', None): for field in ['name', 'slug']: validator = UniqueTogetherValidator(queryset=VLANGroup.objects.all(), fields=('site', field)) validator.set_context(self) validator(data) # Enforce model validation super(WritableVLANGroupSerializer, self).validate(data) return data
def validate(self, data): # Validate uniqueness of vid and name if a group has been assigned. if data.get('group', None): for field in ['vid', 'name']: validator = UniqueTogetherValidator(queryset=VLAN.objects.all(), fields=('group', field)) validator.set_context(self) validator(data) # Enforce model validation super(WritableVLANSerializer, self).validate(data) return data
def test_filter_queryset_do_not_skip_existing_attribute(self): """ filter_queryset should add value from existing instance attribute if it is not provided in attributes dict """ class MockQueryset: def filter(self, **kwargs): self.called_with = kwargs data = {'race_name': 'bar'} queryset = MockQueryset() validator = UniqueTogetherValidator(queryset, fields=('race_name', 'position')) validator.instance = self.instance validator.filter_queryset(attrs=data, queryset=queryset) assert queryset.called_with == {'race_name': 'bar', 'position': 1}
def validate(self, data): # Encrypt plaintext data using the master key provided from the view context if data.get('plaintext'): s = Secret(plaintext=data['plaintext']) s.encrypt(self.context['master_key']) data['ciphertext'] = s.ciphertext data['hash'] = s.hash # Validate uniqueness of name if one has been provided. if data.get('name'): validator = UniqueTogetherValidator(queryset=Secret.objects.all(), fields=('device', 'role', 'name')) validator.set_context(self) validator(data) # Enforce model validation super().validate(data) return data
class Meta: model = User fields = ['mobile', 'email', 'nick_name', 'password'] validators = [ UniqueTogetherValidator(queryset=User.objects.all(), fields=[ 'mobile', ], message='此手机号已经被注册'), UniqueTogetherValidator(queryset=User.objects.all(), fields=[ 'email', ], message='此邮箱已经被注册'), UniqueTogetherValidator(queryset=User.objects.all(), fields=[ 'nick_name', ], message='此用户名已经被注册'), ]
class Meta: model = Registration fields = "__all__" validators = [ UniqueTogetherValidator( queryset=Registration.objects.all(), fields=["student", "period"], message= "A student can be only registered in one course per period", ) ]
class Meta: model = UserSearch fields = ( 'id', 'user', 'keyword', ) validators = [ UniqueTogetherValidator(queryset=UserSearch.objects.all(), fields=['user', 'keyword']) ]
class Meta: model = PinnedComment fields = ('id', 'repository_id', 'issue_id', 'comment_id', 'user') validators = [ UniqueTogetherValidator( queryset=PinnedComment.objects.all(), message=_('This comment has already been pinned.'), fields=('ext_repository_id', 'ext_issue_id', 'ext_comment_id', 'user'), ) ]
class ManufacturerCreateSerializer(serializers.ModelSerializer): class Meta: model = Manufacturer fields = ['name', 'type'] validators = [ UniqueTogetherValidator( queryset=Manufacturer.objects.all(), fields=['name'], message='Such manufacturer name already exists') ]
class Meta: model = Mix fields = [ 'id', 'mix_name', 'rating', 'strength', 'compound', 'bowl', 'description' ] validators = [ UniqueTogetherValidator(queryset=Mix.objects.all(), fields=['mix_name'], message='Such Mix name already exists') ]
class Meta: model = User exclude = ('deleted', ) validators = [ UniqueTogetherValidator(queryset=User.objects.all(), fields=[ 'mobile', ], message='该手机号已经存在'), UniqueTogetherValidator(queryset=User.objects.all(), fields=[ 'email', ], message='该邮箱已经存在'), UniqueTogetherValidator(queryset=User.objects.all(), fields=[ 'username', ], message='该登录名已经存在') ]
class Meta: model = CollectionAddon fields = ('addon', 'notes', 'collection') validators = [ UniqueTogetherValidator( queryset=CollectionAddon.objects.all(), message=_(u'This add-on already belongs to the collection'), fields=('addon', 'collection')), ] writeable_fields = ('notes', ) read_only_fields = tuple(set(fields) - set(writeable_fields))
class Meta: # validate实现唯一联合,一个演员只能收藏一次 validators = [ UniqueTogetherValidator( queryset=UserFavorActor.objects.all(), fields=('user', 'actorId'), # message的信息可以自定义 message="已经收藏此演员" ) ] model = UserFavorActor fields = ("user", "actorId", 'name', 'avatar', 'works')
class Meta: # validate实现唯一联合,一个电影只能收藏一次 validators = [ UniqueTogetherValidator( queryset=UserFavorMovie.objects.all(), fields=('user', 'doubanId'), # message的信息可以自定义 message="已经收藏此电影" ) ] model = UserFavorMovie fields = ("user", "doubanId", 'title', 'poster')
class Meta: model = UserFav # 对一个Model实例需要有删除功能,就需要将id返回 fields = ('user', 'goods', 'id') # 设置联合唯一字段, 让'user', 'goods'成为联合唯一,这是对数据库的操作,设置完毕后一定需要migration unique_together = ('user', 'goods') # 也可以使用rest_framework中的联合唯一索引 validators = [ UniqueTogetherValidator(queryset=UserFav.objects.all(), fields=('user', 'goods'), message='已经收藏过') ]
class Meta: validators = [ # Validate call_id and record_type, together they can't repeat UniqueTogetherValidator( queryset=CallRecord.objects.all(), fields=('call_id', 'record_type'), message='The record call_id + record_type already exists'), ] model = CallRecord fields = ('id', 'call_id', 'phone_source', 'phone_destination', 'record_type', 'record_timestamp')
class Meta: #validate实现唯一联合,一个提案只能收藏一次 validators = [ UniqueTogetherValidator( queryset=UserFav.objects.all(), fields=('user', 'proposal'), #message的信息可以自定义 message="已经收藏") ] model = UserFav #收藏的时候需要返回提案的id,因为取消收藏的时候必须知道提案的id是多少 fields = ("user", "proposal", 'id')
class Meta: model = UserFav # validate实现唯一连个,一个商品只能收藏一次 validators = [ UniqueTogetherValidator( queryset=UserFav.objects.all(), fields=('user', 'goods'), # message信息可以自定义 message='已收藏') ] # 收藏的时候需要返回商品的id,因为取消收藏的时候必须知道商品的id fields = ('user', 'goods', 'id')
class Meta: model = UserProject validators = [ UniqueTogetherValidator(queryset=UserProject.objects.all(), fields=('project_id', 'member_id'), message="已经参加") ] fields = ( "take_time", "member_id", "project_id", )
class Meta: # validate实现唯一联合,一个商品只能收藏一次 validators = [ UniqueTogetherValidator( queryset=UserTask.objects.all(), fields=('user', 'tasks'), # message的信息可以自定义 message="已经创建过该项目") ] model = UserTask # 收藏的时候需要返回任务的id,因为取消收藏的时候必须知道任务的id是多少 fields = ("user", 'id')
class Meta: model = SavingsGroupInvite fields = [ 'savings_group', 'invitee' ] validators = [ UniqueTogetherValidator( queryset=SavingsGroupInvite.objects.all(), fields=['savings_group', 'invitee'] ) ]
class Meta: model = UserFav validators = [ UniqueTogetherValidator(queryset=UserFav.objects.all(), fields=('user', 'goods'), message="已经收藏") ] fields = ( "user", "goods", "id", )
class Meta: model = Rack fields = [ 'id', 'name', 'facility_id', 'display_name', 'site', 'group', 'tenant', 'status', 'role', 'serial', 'asset_tag', 'type', 'width', 'u_height', 'desc_units', 'outer_width', 'outer_depth', 'outer_unit', 'comments', 'tags', 'custom_fields', 'created', 'last_updated', 'device_count', 'powerfeed_count', ] # Omit the UniqueTogetherValidator that would be automatically added to validate (group, facility_id). This # prevents facility_id from being interpreted as a required field. validators = [ UniqueTogetherValidator(queryset=Rack.objects.all(), fields=('group', 'name')) ]
class Meta: model = CrontabSchedule fields = ('id', 'minute', 'hour', 'day_of_week', 'day_of_month', 'month_of_year', 'timezone') validators = [ UniqueTogetherValidator(queryset=CrontabSchedule.objects.all(), fields=('minute', 'hour', 'day_of_week', 'day_of_month', 'month_of_year', 'timezone'), message="已存在,无需重复新增") ]
class Meta: model = User fields = ( 'username', 'email', ) validators = [ UniqueTogetherValidator(queryset=User.objects.all(), fields=['username', 'email']) ] extra_kwargs = {'ranking': {'write_only': True, 'required': False}}
class Meta: #validate实现唯一联合,一个提案只能提一次 validators = [ UniqueTogetherValidator( queryset=UserSponsorProposals.objects.all(), fields=('user', 'proposal'), #message的信息可以自定义 message="已经收藏") ] model = UserSponsorProposals #返回提案的id fields = ("user", "proposal", 'id')
def validate(self, data): # Validate uniqueness of (group, facility_id) since we omitted the automatically-created validator from Meta. if data.get("facility_id", None): validator = UniqueTogetherValidator(queryset=Rack.objects.all(), fields=("group", "facility_id")) validator(data, self) # Enforce model validation super().validate(data) return data
class Meta: model=Role fields=['id','downstreamPlayer','upstreamPlayer','associatedGame','roleName','playedBy','ordered'] read_only_fields=('id','downstreamPlayer','upstreamPlayer','associatedGame','roleName','ordered') validators = [ UniqueTogetherValidator( queryset=Role.objects.all(), fields=['associatedGame', 'playedBy'], message=" Player can only register for 1 Role in Each Game" ), ]
class Meta: model = UserFav validators = [ UniqueTogetherValidator( queryset=UserFav.objects.all(), fields=['user', 'goods'], message="Already Faved" ) ] fields = ("user", "goods", "id")
class Meta: model = AccountMergeRequest validators = [ UniqueTogetherValidator(queryset=AccountMergeRequest.objects.all(), fields=('master_account', 'secondary_account'), message='Merge request already exists') ] fields = ( 'master_account', 'secondary_account', )
class Meta: model = IntervalSchedule fields = ('id', 'every', 'period') validators = [ UniqueTogetherValidator(queryset=IntervalSchedule.objects.all(), fields=( 'every', 'period', ), message="已存在,无需重复新增") ]
class Meta: model = UserAddress validators = [ UniqueTogetherValidator( queryset=UserAddress.objects.all(), fields=['user', 'province', 'city', 'district', 'address'], message="Address already existed." ) ] fields = ("user", "province", "city", "district", "address", "signer_name", "signer_mobile", "id", "add_time")
class Meta: #validate实现唯一联合,一个商品只能收藏一次 validators = [ UniqueTogetherValidator( queryset=UserFav.objects.all(), fields=('user', 'goods'), #message的信息可以自定义 message="已经收藏") ] model = UserFav #收藏的时候需要返回商品的id,因为取消收藏的时候必须知道商品的id是多少 fields = ("user", "goods", 'id')
class Meta: model = UserFav # 这个validate是写在meta信息中的,是因为它不是作用于某一个字段之上了。 validators = [ UniqueTogetherValidator(queryset=UserFav.objects.all(), fields=('user', 'goods'), message="已经收藏") ] # 删除时需要id字段 fields = ('user', 'goods', 'id')