扩展的 CreateView 没有在模板中提供所需的输出
Posted
技术标签:
【中文标题】扩展的 CreateView 没有在模板中提供所需的输出【英文标题】:Extended CreateView does not give the desired output in the template 【发布时间】:2013-06-06 00:02:40 【问题描述】:我的 model.py 中有两个表:
class Partner(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255, blank=True)
class Meta:
db_table = 'partner'
class Device(models.Model):
id = models.AutoField(primary_key=True)
partner = models.ForeignKey('Partner', null=True, blank=True)
username = models.CharField(max_length=255, blank=True)
password = models.CharField(max_length=255, blank=True)
class Meta:
db_table = 'device'
我为通用表单生成创建了一个视图:
class CreateDeviceView(CreateView):
model = Device
template_name = 'device_form.html'
#form_class = DeviceForm
def get_success_url(self):
return reverse('partners')
我从 urls.py 调用:
url(r'^device/new', CreateDeviceView.as_view(), name='device-new'),
模板device_form.html是:
<form action=" action " method="POST">
% csrf_token %
<ul>
form.as_p
</ul>
<input type="submit" class="btn btn-info" value="Save"/>
</form>
生成的创建表单在选择菜单中有值(对于外键):Partner Object,Partner Object... 如何将选择菜单中的值设为 Partner.name? 我尝试构建自己的表单,但没有得到所需的输出。
【问题讨论】:
【参考方案1】:在您的 Partner
模型中,添加 __unicode__
方法:
class Partner(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=255, blank=True)
def __unicode__(self):
return unicode(self.name)
class Meta:
db_table = 'partner'
【讨论】:
谢谢,这就是解决方案。以上是关于扩展的 CreateView 没有在模板中提供所需的输出的主要内容,如果未能解决你的问题,请参考以下文章
如何将引导类添加到模板中的 Django CreateView 表单字段?
Django:如何在新模板中的另一个模型上使用 CreateView 的 form_valid() 返回的响应?
使用占位符和错误验证为 CreateView 和 UpdateView 制作自定义模板
Django - 如何使用CreateView扩展自定义用户