Skip to main content
 首页 » 编程设计

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

2024年10月17日27开发

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) 

当我发出以下帖子请求时,它不会保存 user_firstname 和 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。