1

バータブを処理するためのdjangoアプリを開発しようとしています...これまでのところ、タブを追加したり、タブに製品を追加したり、タブから製品を削除したりできます。今、タブからの製品の追加/削除にAJAXを使用したかったのですが、フォームを使用する必要があるかどうかわかりません...これまでのところ、次のとおりです。

models.py

class Product(models.Model):
  name = models.CharField(max_length='70')
  price = models.FloatField()
  def __unicode__(self):
    return self.name

class Tab(models.Model):
  number = models.IntegerField()
  name = models.CharField(max_length='50')
  tabdate = models.DateTimeField('date created')
  consumed = models.ManyToManyField(Product, through='ConsumedRelation')
  def __unicode__(self):
    return self.name

class ConsumedRelation(models.Model):
  tab = models.ForeignKey(Tab)
  product = models.ForeignKey(Product)
  count = models.PositiveIntegerField(blank=True, null=True, default=1)
  def __unicode__(self):
    return str(self.product)

ビュー.py

def addproduct(request, number, product):
  tab = Tab.objects.get(number=number)
  product = Product.objects.get(id=product)
  add = ConsumedRelation.objects.create(product=product, tab=tab, count=1)
  add.save()
  context = {'tab': tab, 'product': product}
  return render_to_response('addproduct.html', context)

def deleteproduct(request, number, consumedid):
  tab = Tab.objects.get(number=number)
  ConsumedRelation.objects.filter(id=consumedid).delete()
  context = {'tab': tab}
  return render_to_response('deleteproduct.html', context)

urls.py

url(r'^tabs/(?P<number>[0-9].*)/delete/(?P<consumedid>[0-9].*)/$', 'barcomandas.views.deleteproduct'),
url(r'^tabs/(?P<number>[0-9].*)/add/(?P<product>[0-9].*)/$', 'barcomandas.views.addproduct'),

singletab.html

<h1>{{ tab.name }} | {{ tab.number }}</h1>
<h2>Consumed</h2>
{% for consumed in consumedlist %}
<a href="delete/{{ consumed.id }}">X</a>{{ consumed }}<br/>
{% endfor %}

<div id="addproducts">
{% for product in productlist %}
<li><a href="add/{{ product.id }}">{{ product.name }}</a></li>
{% endfor %}
</div>

addproduct.html

{{ product }} added to tab {{ tab.name }}

たとえば、製品を追加すると、「タブに製品が追加されました」という無駄なページが表示されます。これは、ビューを使用できるように、html ページがないとできないためです。それは理にかなっていますか?しかし、これをフォームとして作成したくはありません。これは 7 インチのタブレットで使用するためです。作業中のバーは非常に混雑することがあるため、各製品に適切なサイズのボタンを配置する予定です。それだけのスピードが必要です。

理想的には、左側に現在開いているタブのリスト、右側の列にタブ編集、製品を追加するオプション、タブを閉じるオプションなど、すべてに ajax が必要です。各製品の横に「X」が付いた、singletab.html 内の製品のリスト。X をクリックすると、商品がフェードし、ページをリロードせずにリストとその他すべてが更新されます。

皆さんはそれに対する解決策を見ていますか?私の主な言語ではなく、私の英語で申し訳ありません。

PS: これは私の最初の django アプリでもあるので、ばかげた間違いで申し訳ありません..たとえば (/tabnumber/add/product) の単純な jquery で十分でしょうか? そして、それをどのように実装しますか?

4

1 に答える 1

0

申し訳ありませんが、以下の行を除いて、あなたの質問を正しく理解できませんでした。

singletab.html に製品のリストがあり、各製品の横に「X」が付いています。X をクリックすると、製品がフェードし、ページをリロードせずにリストとその他すべてが更新されます。

JQueryを試してみるとよいと思います。イベント処理とページの ajax 化を容易にする Javascript ライブラリ。

フェードアウトの例については、JQuery について学び始めるのに適した w3 の例を見ることができます。Ajax with JQueryを参照して、JQueryで Ajax を使用する方法を理解することもできます。

うまくいけば、それはあなたを助けるか、一歩先を行く..幸運を祈ります:-)

于 2012-10-07T14:11:06.527 に答える