【发布时间】:2016-04-29 05:18:02
【问题描述】:
当我在Redirect on admin Save 尝试 Daniel Roseman 和 Tim Diggins 的上述建议时,如果我输入一个 URL 并指定 obj.id,它可以工作,但是当我使用 obj.id 时,它会给出 Django 的错误找不到“无”。为了解决这个问题,我必须在我的模型中找到 id 的最大值并使用它(如下所示)。
def response_add(self, request, obj, post_url_continue=None):
arunidlist = arun.objects.values_list('id', flat=True)
newpk = max(arunidlist)
return HttpResponseRedirect("/admin/nbig/arun/%s" % str(newpk))
# this did not work: return HttpResponseRedirect("../%s" % obj.id)
# this worked: return HttpResponseRedirect("/admin/nbig/arun/99")
(请注意,nbig 是我的模型,arun 是我的应用程序)
我看到我引用的字符串已经有几年的历史了,但如果有人能告诉我如何避免这些问题,我将不胜感激。谢谢。
已编辑问题:
修改功能:
def response_add(self, request, obj, post_url_continue=None):
return HttpResponseRedirect("../%s" % obj.id)
模型(Django 创建了 ID 主键):
class arun(models.Model):
auser = models.CharField(max_length=15, null=True)
more fields here
alastcompid = models.FloatField(null=True)
class Meta:
verbose_name = 'NBI Graph'
verbose_name_plural = 'NBI Graph'
def __str__(self):
return str(self.id)
错误: 找不到页面 (404) 请求方法:GET 请求网址:http://127.0.0.1:8000/admin/nbig/arun/None/ 提出者:django.contrib.admin.options.change_view 主键为“无”的 NBI 图形对象不存在。 您看到此错误是因为您的 Django 设置文件中有 DEBUG = True 。将其更改为 False,Django 将显示标准 404 页面。
我保存为新代码的相关部分(这会导致问题吗?):
def save_model(self, request, obj, form, change):
f_id = request.POST.get('id','')
f_adate = datetime.now().date()
f_atime = datetime.now().time()
if '_saveasnew' in request.POST:
aa = arun(id=f_id, adate = f_adate, atime = f_atime)
aa.save(force_insert=True)
【问题讨论】:
-
您是否在模型上手动指定了主键?您能否展示您的模型,以及使用
obj.id时的完整回溯。 -
Alasdair,感谢您提供的任何帮助。我没有手动设置 id 字段。修改后的函数:def response_add(self, request, obj, post_url_continue=None): return HttpResponseRedirect("../%s" % obj.id) Model: class arun(models.Model): auser = models.CharField(max_length= 15、null=True) 这里有更多字段 alastcompid = models.FloatField(null=True) class Meta: verbose_name = 'NBI Graph' verbose_name_plural = 'NBI Graph' def __str__(self): return str(self.id)
-
这里是错误消息:找不到页面 (404) 请求方法:GET 请求 URL:127.0.0.1:8000/admin/nbig/arun/None 引发者:django.contrib.admin.options.change_view NBI Graph 对象,主键为 'None ' 不存在。
-
请edit您的问题并在此处添加代码和错误消息-格式使其更易于阅读!
-
感谢您向我指出编辑功能。我更新了我的问题。