Bir modelin yeni bir örneğini oluşturmak için CreateAPIView
'a gönderilen bir iletişim formum var (bu, yöneticiye e-postayla gönderilir) . Diziselleştiricimde spam'i reddetmek için bir bal küpü alanım var.DRF: Doğrulamadan sonra model oluşturucudaki alanı kaldır ancak yaratılmadan önce (CreateAPIView'de)
modeli:
class Message(models.Model):
name = ...
message = ...
ve seri hale:
class MessageSerializer(serializers.ModelSerializer):
# Honeypot field
url = serializers.CharField(allow_blank=True, required=False)
class Meta:
model = Message
fields = '__all__'
def validate_url(self, value):
if value and len(value) > 0:
raise serializers.ValidationError('Spam')
return value
ve görünüm:
class MessageView(generics.CreateAPIView):
''' Create a new contact form message. '''
serializer_class = MessageSerializer
Benim sorun olduğunu şimdiki haliyle bu görüşe yüklerken, ben hatayı alın:
210 öylesine besbelli seriazlier ben serileştirici alanına read_only
ekleyerek çalıştı CreateApiView.perform_create()
yılında modele url
alanını kurtarmaya çalışıyor, ancak bu url_validate
yöntem olduğu gibi atlanır anlamına gelir.
Doğrulama gerçekleşene kadar alanı serializer üzerinde nasıl tutabilirim, serializer.save()
perform_create()
içinde çağrılmadan önce onu nasıl kaldırabilirim?
Ha, ben bunu anladım ve senin yaptığın tam olarak yayınlanmıştır. –
puanına sahip olabilirsiniz, ancak cevabınız için teşekkür ederiz, ancak 'Message.objects.create (** data)' yanlıştır 'validated_data' yerine "Message.objects.create (** validated_data)" demek yerine – shotgunner