1

我一直在尝试开发一个用于处理栏标签的 django 应用程序......到目前为止,我可以添加标签、将产品添加到标签以及从标签中删除产品。现在,我想在从选项卡中添加/删除产品时使用 AJAX,但我不知道是否需要使用表单......这是我目前所拥有的:

模型.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)

网址.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>

添加产品.html

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

例如,当我添加一些产品时,我有一个无用的页面“产品添加到选项卡”,因为没有一些 html 页面我无法做到,所以我可以使用视图。那有意义吗?但我不想把它做成一个表格,因为这将用于一个 7 英寸的平板电脑,而且我会为每个产品设置大小合适的按钮,因为我工作的酒吧有时会非常忙碌,所以我需要这样的速度。

理想情况下,我会对所有内容都有 ajax,左侧是当前打开的选项卡列表,右侧列是选项卡编辑,以及添加产品、关闭选项卡等的选项。所以我想要的是,有singletab.html 中的产品列表,每个产品的旁边都有一个“X”。您单击 X,产品消失,列表和其他所有内容都会更新,而无需重新加载页面。

你们有什么解决办法吗?对不起我的英语,不是我的主要语言。

PS:这也是我的第一个 django 应用程序,所以对于任何愚蠢的错误,我深表歉意.. 一个简单的 jquery 例如(/tabnumber/add/product)就足够了吗?我将如何实施它?

4

1 回答 1

0

很抱歉,除了以下几行外,我没有正确理解您的问题。

singletab.html 中有产品列表,每个产品的旁边都有一个“X”。您单击 X,产品消失,列表和其他所有内容都会更新,而无需重新加载页面。

我认为您可以尝试使用JQuery。它的 Javascript 库使事件处理和页面 ajaxifying 变得更容易。

对于您的淡出示例,您可以查看w3 示例,这是开始学习 JQuery 的好地方。您还可以参考Ajax with JQuery以了解如何将 Ajax 与 JQuery 一起使用。

希望它可以帮助您或让您领先一步。祝您好运:-)

于 2012-10-07T14:11:06.527 回答