我有这个型号
class Country(models.Model):
countryname = models.TextField(null=True)
countryincharge = models.ForeignKey(Employees, on_delete=models.CASCADE,null = True)
createdby = models.TextField(null=True)
createdtime = models.TextField(null=True)
modifiedby = models.TextField(null=True)
modifiedtime = models.TextField(null=True)
deletedby = models.TextField(null=True)
deletedtime = models.TextField(null=True)
isdeleted = models.IntegerField(null=True)
tenantid = models.TextField(null=True)
并创建和更新函数,如下所示
#Create
def countrycreate(request):
if request.user.is_authenticated:
if request.method == 'POST':
id = request.POST.get('id')
modelwithdata = Country(
countryname=request.POST.get('countryname'),
countryincharge_id=request.POST.get('countryincharge'),
createdtime = timezone.now(),
createdby = request.user.id
)
if Country.objects.filter(countryname=request.POST.get('countryname')).exists():
messages.info(request, 'Country already exists!')
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
else:
modelwithdata.save()
return redirect('/admin/countrylistview')
#Update
def countryupdate(request):
if request.user.is_authenticated:
if request.method == 'POST':
id = request.POST.get('id')
modelwithdata = Country(
countryname=request.POST.get('countryname'),
countryincharge_id=request.POST.get('countryincharge'),
modifiedtime = timezone.now(),
modifiedby = request.user.id
)
modelwithdata.id = id
modelwithdata.save()
return redirect('/admin/countrylistview')
问题是当创建记录时,createdtime值会按预期保存。但在运行update函数时,createdtime值设置为None。不知什么原因。其他领域运作良好。数据库是SQLite。使用DateTimeField(auto_now_add=True, null=True)
和DateTimeField(auto_now=True, null=True)
时也会发生相同的行为
您应该使用
PUT
或PATCH
方法来更新数据,而不是POST对于您的代码,我们也可以使用
.update()
问题是,在创建新对象时,首先获取原始对象并仅更改所需的内容
相关问题 更多 >
编程相关推荐