我一直在尝试从我的房地产网络应用程序序列化数据,但每当我向后端发出 http POST 请求时,它都会在列中返回空值
realtor_id
违反非空约束。有人可以帮我解决这个问题吗?
模型.py
class Listing(models.Model):
realtor = models.ForeignKey(Realtor, on_delete=models.DO_NOTHING)
title = models.CharField(max_length=200)
address = models.CharField(max_length=200)
city = models.CharField(max_length=100)
state = models.CharField(max_length=100)
zipcode = models.CharField(max_length=20)
description = models.TextField(blank=True)
price = models.IntegerField()
bedrooms = models.IntegerField()
bathrooms = models.DecimalField(max_digits=2, decimal_places=1)
garage = models.IntegerField(default=0)
sqft = models.IntegerField()
lot_size = models.DecimalField(max_digits=5, decimal_places=1)
photo_main = models.ImageField(upload_to='photos/%Y/%m/%d/')
photo_1 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
photo_2 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
photo_3 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
photo_4 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
photo_5 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
photo_6 = models.ImageField(upload_to='photos/%Y/%m/%d/', blank=True)
is_published = models.BooleanField(default=True)
list_date = models.DateTimeField(default=datetime.now, blank=True)
def __str__(self):
return self.title
serializer.py
class ListingSerializer(serializers.Serializer):
pk = serializers.IntegerField(read_only=True)
title = serializers.CharField(max_length=200)
address = serializers.CharField(max_length=200)
city = serializers.CharField(max_length=100)
state = serializers.CharField(max_length=100)
zipcode = serializers.CharField(max_length=20)
price = serializers.IntegerField()
bedrooms = serializers.IntegerField()
bathrooms = serializers.DecimalField(max_digits=2, decimal_places=1)
garage = serializers.IntegerField(default=0)
sqft = serializers.IntegerField()
lot_size = serializers.DecimalField(max_digits=5, decimal_places=1)
description = serializers.CharField()
list_date = serializers.DateTimeField()
class Meta:
model = Realtor
fields = ['name']
def create(self, validated_data):
return Listing.objects.create(**validated_data)
serializer.py 的更新方法
def update(self, instance, validated_data):
instance.realtor = validated_data.get('realtor', instance.Realtor.name)
instance.title = validated_data.get('title', instance.title)
instance.address = validated_data.get('address', instance.address)
instance.city = validated_data.get('city', instance.city)
instance.state = validated_data.get('state', instance.state)
instance.zipcode = validated_data.get('zipcode', instance.zipcode)
instance.description = validated_data.get('description', instance.description)
instance.description = validated_data.get('list_date', instance.list_date)
instance.price = validated_data.get('price', instance.price)
instance.bedrooms = validated_data.get('bedrooms', instance.bedrooms)
instance.bathrooms = validated_data.get('bathrooms', instance.bathrooms)
instance.garage = validated_data.get('garage', instance.garage)
instance.sqft = validated_data.get('sqft', instance.sqft)
instance.lot_size = validated_data.get('lot_size', instance.lot_size)
instance.save()
return instance
会不会是我的更新方法导致了这个错误?
instance.realtor = validated_data.get('realtor', instance.Realtor.name)
... realtor 是一个外键,但在这里你引用了一个名字