在对已接受答案的评论之后django createview如何获取创建的对象,我正在尝试使用由创建的用户的 idCreateView
in its get_success_url
方法。然而,即使它肯定被保存到 MySQL 并接收一个 id,当我访问self.object
,它没有可使用的 id。该模型确实有一个id
财产。为什么我无法访问该 id?如果我被链接的评论引入歧途,那么获取 id 的正确方法是什么?
参考代码:
模型.py
from django.db import models
class User(models.Model):
id = models.IntegerField(primary_key=True)
name = models.CharField(max_length=128)
active = models.BooleanField(blank=True)
created_date = models.DateTimeField()
class Meta:
managed = False
db_table = 'user'
def __unicode__(self):
return self.name
views.py
from django.views.generic import CreateView
from django.core.urlresolvers import reverse
from forms import AddUserForm
class AddUserView(CreateView):
form_class = AddUserForm
fields = ['name', 'active'] # id and created_date are auto-filled upon save
template_name = 'webApp/add_user_form.html'
def get_success_url(self):
print self.object # Prints the name of the submitted user
print self.object.id # Prints None
return reverse("webApp:user:stepTwo", args=(self.object.id,))
它是空白的,因为该对象实际上并未接收 id。那是因为id
字段应该是自动场,而不是 IntegerField,因此它被声明为自动递增。
实际上,您根本不应该声明它:名为 id 的主键 AutoField 是默认值,所以你应该忽略它。
请注意,进行此更改后,您需要迁移数据库表,或者删除并重新创建它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)