对于我的第一个 Django 项目,我正在尝试制作一个应用程序,该应用程序允许用户创建媒体列表(书籍、电影等),其中包含描述每个对象(标题、作者等)的各种字段,但我无法确定出如何让它保存。也就是说,提交表单时什么也没有发生。有人可以告诉我我做错了什么吗?对不起,如果这是一个菜鸟问题;好像我在这里错过了一些非常基本的东西。(我使用的是基本的 HTML 表单而不是 ModelForms,因为对于某些媒体类型,我想忽略某些字段 - 例如电影的“作者” - 但如果有一种使用 ModelForms 的简单方法,我会全力以赴。)
从views.py:
def editbook(request,list_owner,pk):
book_list = Item.objects.all().filter(item_creator=list_owner).filter(category='book').order_by('type','name')
item_to_edit = Item.objects.get(pk=pk)
if request.method == 'POST':
item_to_edit.save()
return render_to_response('books.html', {'booklist': book_list, 'listowner': list_owner}, RequestContext(request))
else:
form=EditItem()
return render_to_response('editbook.html', {'listowner': list_owner, 'item_to_edit': item_to_edit}, RequestContext(request))
来自models.py:
CATEGORY_CHOICES = (
('book','book'),
('tv','tv'),
('movie','movie'),
('game','game'),
('music','music'),
)
class Item(models.Model):
item_creator = models.CharField(max_length=30) # user name goes here
category = models.CharField(max_length=5, choices=CATEGORY_CHOICES)
name = models.CharField(max_length=70)
created = models.DateTimeField(auto_now_add=True)
modified = models.DateTimeField(auto_now=True)
artist = models.CharField(max_length=70, blank=True)
type = models.CharField(max_length=50, blank=True)
progress = models.CharField(max_length=10, blank=True)
finished = models.BooleanField(default=False)
rating = models.IntegerField(default=0, blank=True, null=True)
comment = models.CharField(max_length=140, blank=True)
def __unicode__(self):
return self.name