使用for循环填充Django模型

jm81lzqq  于 2023-04-07  发布在  Go
关注(0)|答案(1)|浏览(108)

我有一个模型Task,我想用一个for循环来填充它。在一个列表中,我有应该传递到模型中的任务。
我的模型实际上有三个以上的任务(下面我只显示了三个)。列表也将有不同数量的条目。列表也可以只有一个任务。

tasks = ['first task', 'second task', 'third task']


class Task(models.Model):
    ad = models.OneToOneField(Ad, on_delete=models.CASCADE, primary_key=True, blank=True, null=False)
    task1 = models.CharField(max_length=256, blank=True, null=True)
    task2 = models.CharField(max_length=256, blank=True, null=True)
    task3 = models.CharField(max_length=256, blank=True, null=True)

    def __str__(self):
        return f'Tasks for {self.ad}'

我的方法看起来像这样:

task_obj = Task.objects.create(
    ad = ad
)
for idx, t in enumerate(tasks):
    task_obj.f'task{idx+1}' = t

基本上这部分f'task{idx+1}'不应该是字符串,而是模型的实际变量。
这甚至是可能的吗?或者有其他我不知道的方式存在吗?

vvppvyoh

vvppvyoh1#

您可以使用setattr内置函数设置动态属性:

for idx, t in enumerate(tasks):
    setattr(task_obj, f'task{idx+1}', t)

相关问题