我是Django的新手。我正在构建一个简单的应用程序,我在使用基于类的视图创建对象时遇到了困难。我有一个模特:
Models.py:
class Vehicle(models.Model):
make = ...
model = ...
def get_absolute_url(self):
return reverse('vehicle-detail', kwargs={'pk' : self.PK})
然后在views.py中:
class VehicleCreate(CreateView):
model = Vehicle
fields = ['make','model']
myapp urls.py
url(r'vehicle/add/$', VehicleCreate.as_view(), name='vehicle-add'),
我上面写的所有内容仅与CreateView有关。根据CreateView cbv的需要,可以正确导入所有内容。当我访问mydomain.com/vehicle/add/时,有一个包含模型所有字段的表单,但是当我点击Create按钮时会抛出错误NoReverseMatch。 我正在用手机写信,这就是为什么我发布完整的.py文件内容有点困难。
答案 0 :(得分:1)
您的模型有get_absolute_url
方法。
class Vehicle(models.Model):
def get_absolute_url(self):
return reverse('vehicle-detail', kwargs={'pk' : self.PK})
要使其工作,需要有一个名为vehicle-detail
的url模式,它接受主键作为关键字参数。
您可以使用DetailView
创建视图。
class VehicleDetail(DetailView):
model = Vehicle
...
您必须创建一个合适的模板。
然后添加url模式,例如:
url(r'vehicle/(?P<pk>\d+)/$', VehicleDetail.as_view(), name='vehicle-detail'),