在Django Admin中我显示了一个URL
这个url是使用id附加的对象创建的。
我正在使用python,django和django-rest-framework
在我看来,我在ApiDetail类上有逻辑。在这里我覆盖'get'方法。
我在views.py中增加当前对象:
currentObject = Api.objects.get(id=pk)
currentObject.currentNumber += 1
currentObject.save()
return self.retrieve(request, *args, **kwargs)
在models.py中我设置了url字段:
class Api(models.Model):
myUrl = models.CharField(max_length=500, blank=True, verbose_name="Url", editable=False)
def save(self, *args, **kwargs):
self.formUrl = "https://custumUrl/"+str(self.id)+"/"
super(Api, self).save(*args, **kwargs)
这里我重写了api save方法来更新formUrl字段 我遇到的问题是当表单首次添加到Django管理员并保存网址时说:
https://custumUrl/none/
应该说:
https://custumUrl/1/
或任何数字,但绝对是对象的数量。
答案 0 :(得分:2)
我认为丹尼尔的评论是正确的,你应该听从他们的意见。
但是如果您不想这样做,那么您应首先保存一个对象,然后为该网址分配一个id值,然后再次保存:
class Api(models.Model):
myUrl = models.CharField(max_length=500, blank=True, verbose_name="Url", editable=False)
def save(self, *args, **kwargs):
super(Api, self).save(*args, **kwargs)
self.formUrl = "https://custumUrl/"+str(self.id)+"/"
super(Api, self).save(*args, **kwargs)
答案 1 :(得分:0)
currentNumber
类中是否定义了Api
此外,在您的Api
课程中,您已定义myUrl
,但在保存方法中,它是formUrl
。
也许尝试这样的事情:
class Api(models.Model):
formUrl = models.CharField(max_length=500, blank=True, verbose_name="Url", editable=False)
def save(self):
"""If this is the firsts time populate required details, otherwise update it."""
if not self.id:
latest_obj = Api.latest('id')
this_id = latest_obj.id
self.formUrl = "https://custumUrl/"+str(this_id)+"/"
super(Api, self).save()
else:
#Save it as is
super(Api, self).save()