首页 > 解决方案 > 从另一个字段获取 django 模型字段

问题描述

我有这个模型

class Person(models.Model):

    picture = models.ImageField(
        default='default.jpg', upload_to='profile_pics', )

    firstName = models.CharField(blank=True, max_length=100)
    familyName = models.CharField(blank=True, max_length=100)
    age = models.IntegerField(default=0)
    GENDER = [
        ("M", 'Male'),
        ("F", 'Female'),
        ("U", 'UNKNOWN'),

    ]
    gender = models.CharField(
        max_length=2,
        choices=GENDER,
        default="U",
    )
    address = models.CharField(blank=True, max_length=100)
    remark = models.TextField(default="no remark")
    description_vector = models.TextField(blank=True)

每当我添加新人员或更改模型图像时(如果图像没有更改,我不想更改 description_vector )我知道我可以使用像这里 这样的保存方法,但我不知道如何指定当图像更改矢量更改时。

我不知道它是否会改变任何东西,但我使用django-rest-framowrk来添加和更改我认识的人

标签: django-models

解决方案


我不确定我是否理解您的具体疑问,但我认为这可能会有所帮助。

def save(self, *args, **kwargs):
    if self.id is not None: # check only when update
        original_picture = self.objects.get(id=self.id).picture

        if original_picture !== self.picture # You must add here your method to evaluate if both images are equal
            self.vector = some_method_to_change_vector(self.picture)

    return super().save(*args, **kwargs)

推荐阅读