模型在Django中是不可迭代的



单击按钮时出现此错误。当我单击按钮时,我正在调用一个名为apply的函数。因此,首先,我有两个模型,JobServicesMissionEffectuee,表MissionEffectuee通常填充有JobServices的内容。

两种型号:

class JobServices(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True) #create_user
service_name = models.CharField(max_length=100, default="nom du service")
hour = models.IntegerField(default="Heures")
amount = models.FloatField(default="Cout")
service_date = models.DateTimeField(auto_now_add=True, null=True)
description = models.CharField(max_length=2000, null=True, default="annonce")
image_url = models.CharField(max_length=2000, null=True, blank=True)
image = models.ImageField(null=True, blank=True)
class MissionEffectuee(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
service = models.ForeignKey(JobServices, on_delete=models.CASCADE, null=True)
rcd_date = models.DateTimeField(auto_now_add=True, null=True)

以下是视图方法

def apply(request, my_id):
task_applied = JobServices.objects.get(id=my_id)
task_done, failed = MissionEffectuee.objects.get_or_create(id=my_id)
if failed:
for c in task_applied:
task_done.service = c.service_name
task_done.user = c.user
print("it's saved")
task_done.save()
else:
print("Element is already there")
return redirect('../taches')
context = {'task_done': task_done}
return render(request, 'task_apply.html', context)

我想要的是,每当我点击按钮时,模型Jobservicesservice_name和模型Useruser将分别保存在属性serviceuser中的表MissionEffectuee中,但目前,在表中,这两列都填充了hypen(-(。但是rcd_date属性通常按照我的意愿填充。

我认为问题出在foreignkeys

您正在对JobServices模型执行get,它将返回该模型的1个实例。

所以你只需要使用1个实例,就像这样;

task_applied = JobServices.objects.get(id=my_id)
task_done, failed = MissionEffectuee.objects.get_or_create(id=my_id)
if failed:
task_done.service = task_applied  # This must be a `JobServices` instance, not the name
task_done.user = task_applied.user
print("it's saved")
task_done.save()

如果您使用JobServices.objects.filter(),那么它将从该表返回一个对象的查询集,您可以像使用for c in task_applied一样对其进行迭代。

最新更新