【发布时间】:2017-07-14 22:45:35
【问题描述】:
这是我第一次尝试使用外键删除对象。这些模型具有一对多的关系:
class NumObject(models.Model):
title= models.CharField(max_length=50)
number= models.IntegerField()
ident= models.IntegerField()
usersave= models.CharField(max_length=100, blank= True)
def __str__(self):
return self.title
def save(self, *args, **kwargs):
super(NumObject,self).save(*args,**kwargs)
def get_absolute_url(self):
return reverse('posts:detail', kwargs={'id': self.id})
class Sounds(models.Model):
numobj = models.ForeignKey(NumObject)
title = models.CharField(max_length=50)
sound = models.FileField()
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('posts:detail', kwargs={'title': self.title})
NumObject 和 Sounds 的视图如下所示:
def post_detail(request,id= None):
instance= get_object_or_404(NumObject, id=id)
context= {
'title': instance.number,
'instance': instance,
}
return render(request,'post_detail.html',context)
def sound_detail(request,id= None):
instancesound= get_object_or_404(Sounds, id=id)
context= {
'sound': instance.number,
'instancesound': instancesound,
}
return render(request,'sound_detail.html',context)
在我的模板中,我可以显示与“NumObject”对象关联的所有“声音”对象:
{% for obj in instance.sounds_set.all %}
{% include 'sound_detail.html' %}
{% endfor %}
sound_detail.html 有一个显示所有声音对象的 ul,以及指向每个声音对象的删除视图的链接:
<a href="/{{instance.id}}/delete/">Delete</a>
删除视图的 url 如下所示:
url(r'^(?P<id>\d+)/delete/$', views.post_delete, name= 'delete'),
还有删除视图:
def post_delete(request, id):
sound= get_object_or_404(Sounds, pk=id).delete()
return redirect('posts:list')
由于某种原因,当我尝试删除单个“声音”对象时,我得到“找不到页面”,请求 URL 为 http://127.0.0.1:8000/8/delete/,并出现错误“没有声音与给定的查询匹配。”(看起来好吧我)。最难理解发生了什么,任何帮助表示赞赏!
【问题讨论】:
标签: python django django-models foreign-keys delete-file