如何一次初始化可变数量的Django模型字段?

2024-10-02 08:27:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我为Stackexchange用户获取一些数据并将其存储在我的Django模型中:

class StackExchangeProfile(models.Model):
    access_token = models.CharField(max_length=100)
    expires = models.IntegerField()
    reputation = models.IntegerField(null=True)
    link = models.URLField(null=True)
    image = models.URLField(null=True)
    ...

我用一对必需的参数实例化这个模型:

^{pr2}$

我想出了一个方法来设置非必需的:

class StackExchangeProfile(models.Model):
    ...
    def fill_profile(self, reputation, link, image):
        self.reputation = reputation
        self.link = link
        self.image = image

我不太喜欢,因为它不允许我设置自定义属性集(例如,只有在用户没有图像的情况下,声誉和链接)。在

有没有办法实现这种灵活性?在


Tags: 用户模型imageselftruemodelmodelslink
2条回答

您可以使用与实例化中相同的**kwargs魔术:

def fill_profile(self, **kwargs):
    for attr, value in kwargs.iteritems():
        setattr(self, attr, value)

然后使用命名参数调用此方法:

^{pr2}$

我认为为每个字段设置一个默认值是个好主意,这样您就不必总是检查参数是否存在。在

def fill_profile(self, reputation=None, link=None, image=None):
        self.reputation = reputation
        self.link = link
        self.image = image

se_profile.fill_profile(image="http://a.com/a.jpg")

相关问题 更多 >

    热门问题