无法分配"'7'":"Appointment.your_service"必须是"Service"实例



我正在做一个项目"美容院管理系统;我得到了这个错误(不能分配"7'":"约会。你的服务"必须是"服务"实例。(这里的任何人都可以帮助我。

当我填写图书预约表时,我出现了这个错误。

型号.py

class Service(models.Model):
name = models.CharField(max_length=50)
price = models.IntegerField(default=0)
image = models.ImageField(upload_to='uploads/productImg')
class Appointment(models.Model):
your_name = models.CharField(max_length=100)
your_phone = models.CharField(max_length=10)
your_email = models.EmailField(max_length=200)
your_service = models.ForeignKey('Service', on_delete=models.CASCADE, default=1)
your_date = models.DateField() 

views.py

def appointments(request):
if request.method == 'GET':
return render(request, 'core/bookappointment.html')
else:   
your_name = request.POST.get('your-name')
your_phone = request.POST.get('your-phone')
your_email = request.POST.get('your-email')
your_service = request.POST.get('your-service')
your_date = request.POST.get('your-date')

details = Appointment(
your_name = your_name, 
your_phone = your_phone, 
your_email = your_email, 
your_service = your_service, 
your_date = your_date)
details.save()
return render(request, 'core/appointments.html')

通过将方法分配给your_service_id字段来创建它,如果使用your_service,它应该是Service对象:

details = Appointment.objects.create(
your_name=your_name, 
your_phone=your_phone, 
your_email=your_email, 
your_service_id=your_service,
your_date=your_date
)

也就是说,通常最好使用ModelForm来验证、清理和保存数据,而不是手动。


注意:如果POST请求成功,您应该发出redirect[Django-doc]实现发布/重定向/获取模式[wiki]。这样可以避免在用户刷新浏览器

def appointments(request,pk):
record = get_object_or_404(Service,pk=pk)
if request.method == 'POST':

form = appointmentsForm(request.POST,request.FILES)
if form.is_valid():
appointment= form.save(commit=False)
appointment.your_service = record
appointment.save()
return render(request, 'core/bookappointment.html')
else:   

return render(request, 'core/appointments.html')

最新更新