python - Django休息框架: Fields are not getting create or update after making custom methods inside models

标签 python django django-rest-framework

class UserInfo(models.Model):
        user_id = models.AutoField(primary_key=True)
    user_firstname = models.CharField(max_length=20, verbose_name = "First Name")
    user_lastname = models.CharField(max_length=20, verbose_name = "Last Name")
    user_email = models.EmailField(max_length=50, verbose_name = "Email Id")
    user_dob = models.DateField(auto_now = False, auto_now_add=False, verbose_name = "Date of Birth")
    user_mobileno = models.CharField(max_length=14, verbose_name = "Contact No")
user_image = models.ImageField(upload_to = upload_location, 
    null=True,
    blank=True, 
    width_field = "width_field", 
    height_field = "height_field", verbose_name = "Profile Picture")
    width_field = models.IntegerField(default=0)
    height_field = models.IntegerField(default=0)
    user_password = models.CharField(max_length=20, verbose_name = "Password")
    user_blood_group = models.CharField(max_length=5, verbose_name = "Blood Group")
    user_location_id = models.ForeignKey(Location, on_delete=models.CASCADE, verbose_name = "Current Location")
    user_profession = models.CharField(max_length=20, verbose_name = "Profession")
    user_fb_id = models.CharField(max_length=20, verbose_name = "Facebook Contact", blank=True)
    user_random_id = models.CharField(max_length=20, verbose_name = "Registration Id")
    user_created_date = models.DateField(auto_now = True, auto_now_add=False)
    user_updated_date = models.DateField(auto_now = True, auto_now_add=False)

    def get_name(self):
        return "%s %s" % (self.user_firstname, self.user_lastname)

   def __str__(self):
            return "%s %s" % (self.user_firstname, self.user_lastname)

当我发出以下发布请求时,它会保存用户名字和姓氏,甚至不更新。 get_name 方法返回“”。

以下是我的序列化器

class UserSerializer(serializers.ModelSerializer):
    name = serializers.CharField(source='get_name')
    class Meta:
        model = UserInfo
        fields = ['user_id','name']

谁能帮忙解决这个问题吗?

最佳答案

根据序列化器中定义的名称传递用于创建对象的参数,该名称将按您的需要工作,确保您传递的所有参数的值不能为空。现在,如果您希望用户传递参数名称而不是 user_firstname 和 user_lastname,您将需要在创建和拆分名称时获取名称值,以获取名字和姓氏并将其分配给 user_firstname 和 user_lastname。

关于python - Django休息框架: Fields are not getting create or update after making custom methods inside models,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39389134/

相关文章:

python - 如何从另一个 AWS 角色代入 AWS 角色?

python - 删除特定列号后所有包含全零的行

django - 如何在 DRF GenericAPIView 上启用分页?

django - 如何在 django rest 框架中定义列表字段?

python - 使用 Django 信号传递附加属性

Python多处理

Python:仅使用 dir() 获取导入模块中定义的类?

python - Django - Decimal 类型的对象不可 JSON 序列化并转换为 View 中的模型数据

python - Django 中的可交换模型是什么?

python - 转json还是不转json