单击按钮时出现此错误。当我单击按钮时,我正在调用一个名为apply的函数。因此,首先,我有两个模型,JobServices
和MissionEffectuee
,表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)
我想要的是,每当我点击按钮时,模型Jobservices
的service_name
和模型User
的user
将分别保存在属性service
和user
中的表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
一样对其进行迭代。