django - 字段“id”需要一个数字,但当我尝试创建课程时得到“完整的 JavaScript”,我收到此错误
问题描述
这是我的课程模型。
class Course(models.Model):
owner = models.ForeignKey(settings.AUTH_USER_MODEL,\
related_name='courses_created', on_delete=models.CASCADE)
subject = models.ForeignKey(Subject,related_name='courses', on_delete=models.CASCADE)
title = models.CharField(max_length=200)
pic = models.ImageField(upload_to="course_pictures")
slug = models.SlugField(max_length=200, unique=True,blank=True)
overview = models.TextField()
created = models.DateTimeField(auto_now_add=True)
updated = models.DateTimeField(auto_now=True)
enroll = models.ManyToManyField(settings.AUTH_USER_MODEL,related_name='enrollment',blank=True)
class Module(models.Model):
course = models.ForeignKey(Course, related_name='modules', \
on_delete=models.CASCADE)
title = models.CharField(max_length=200)
description = models.TextField(blank=True)
order = OrderField(blank=True, for_fields=['course'])
class Meta:
ordering = ['course']
class Content(models.Model):
module = models.ForeignKey(Module,related_name='contents', on_delete=models.CASCADE)
content_type = models.ForeignKey(ContentType,on_delete=models.CASCADE,\
limit_choices_to={'model__in':('text',
'video','image','file')})
object_id = models.PositiveIntegerField()
item = GenericForeignKey('content_type', 'object_id')
order = OrderField(blank=True, for_fields=['module'])
这是我用于创建课程的函数基础视图,当我尝试发出创建课程的发布请求时,django 抛出异常 ValueError 字段“id”预期为数字但得到“完整的 JavaScript”。我想知道这个错误来自哪里,任何人都可以提供帮助。
def course_create(request,*args,**kwargs):
id = kwargs.get('id')
if request.method =="POST":
subject = request.POST['title']
course = request.POST['title']
overview = request.POST['overview']
front_pic = request.POST['pic']
title = request.POST['title']
desc = request.FILES.get('description')
owner = Account.objects.get(username=request.user.username)
course,create = Course.objects.get_or_create(title=course,
owner=owner,
subject=subject)
subject,create = Subject.objects.get_or_create(title=subject)
module,create = Module.objects.get_or_create(course=course,
description=desc,
title=title,
order=id)
data = Course(owner=owner,
title=course,
subject=subject,
pic=front_pic,
desc=desc,
overview=overview,
order=id,
module=module.id)
data.save()
return redirect('course:main')
return render(request,'manage/module/formset.html')
这是用于过滤和保持模型有序的 fields.py。
class OrderField(models.PositiveIntegerField):
def __init__(self ,for_fields=None, *args, **kwargs):
self.for_fields = for_fields
super(OrderField, self).__init__(*args,**kwargs)
def pre_save(self, model_instance, add):
if getattr(model_instance, self.attname) is None:
# no current value
try:
qs = self.model.objects.all()
if self.for_fields:
#filter by objects with the same field values
# for the fields in for_filds
query ={field:getattr(model_instance, field)\
for field in self.for_fields}
qs = qs.filter(**query)
# get the order of the last item
last_item = qs.latest(self.attname)
value = last_item.order + 1
except ObjectDoesNotExist:
value = 0
setattr(model_instance, self.attname, value)
return value
else:
return super(OrderField, self).pre_save(model_instance, add)
解决方案
推荐阅读
- c++ - 为什么下面的代码显示数组中的最后一个月,而不是显示降雨量最高和最低的月份?
- spring-mvc - 将包放入@ComponentScan(basePackage = { "xxx.yyy.zzzz" })
- sql - 字符串字段在结果中的 20 个字符后被截断
- django - 如何使用 django 模型将多个数据保存到一张表中?
- mysql - 当前时间,但为昨天
- python - pyqt5 标签可见性未隐藏的问题
- flutter - sticky_header:RenderStickyHeader 不满足其约束
- react-native - 将 RN 项目从 0.46.4 升级到 0.60.0 并在 VSCode 中运行结果无法从任何承诺中获得履行价值,所有承诺都被拒绝
- amazon-web-services - AWS Batch 中如何使用 Docker 容器?最大的 vCPU 究竟是多少?
- reactjs - 我没有读到属性绑定