私の最初の Django プロジェクトでは、各オブジェクト (タイトル、著者など) を説明するさまざまなフィールドを使用して、ユーザーがメディア (本、映画など) のリストを作成できるアプリを作成しようとしています。保存する方法を説明します。つまり、フォームが送信されても何も起こりません。誰かが私が間違っていることを教えてもらえますか? これが初心者の質問である場合は申し訳ありません。ここで本当に基本的なものが欠けているようです。(ModelForms の代わりに基本的な HTML フォームを使用しています。これは、一部のメディア タイプでは特定のフィールド (映画の「作成者」など) を無視したいためですが、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