【问题标题】:Django-suit admin for loop in tab选项卡中循环的 Django-suit 管理员
【发布时间】:2015-05-27 01:56:39
【问题描述】:

我正在尝试创建一个带有 django-suit 扩展名的选项卡来查看报价并列出所有报价项。我不太确定如何在 django-suit 扩展中执行此操作,因为我通常知道我会使用 {% for items in x %} 类型的模板代码。

如果有人有使用此扩展程序并完成此任务的经验,或者我可以通过其他方式完成此任务,那么使用 original.pk 传递主键会很棒。

models.py

from django.db import models


class Quote(models.Model):
    description = models.CharField(max_length=200)
    date = models.DateField('Date Issued')
    client = models.ForeignKey('organizations.Contact')
    gst = models.BooleanField(default=True, verbose_name='GST Applicable')
    assigned = models.BooleanField(default=True, verbose_name='Quote Assigned')
    notes = models.TextField(blank=True)


    def __str__(self):
        return self.date.__str__().replace("-", "") + "-" + self.id.__str__().zfill(3)


class QuoteItem(models.Model):
    order = models.PositiveIntegerField()  # For Suit order sorting
    invoice = models.ForeignKey(Quote)
    description = models.CharField(max_length=200)
    quantity = models.IntegerField(default=0)
    price = models.DecimalField(max_digits=9, decimal_places=2)

    def __str__(self):
        return self.description

view_quote.html

<h2 class="legend">View Invoice
</h2><br>
{% if original.pk %}
    <span>Invoice Information</span>
    <table class="table-overview">
        <tr>
            <th>Invoice ID</th>
            <td>
                {{ original }}
            </td>
        </tr>
        <tr>
            <th>Description</th>
            <td>
                {{ original.description }}
            </td>
        </tr>
        <tr>
            <th>Client</th>
            <td>
                {{ original.client }}
            </td>
        </tr>
        <tr>
            <th>Notes</th>
            <td>
                {{ original.notes }}
            </td>
        </tr>
    </table>

    <span>Invoice Items</span>
    <table class="table-overview">
        <tr>
            <th>Description</th>
            <th>Price</th>
            <th>Quantity</th>
            <th>Total</th>
        </tr>

        {% for items in original.quoteitems %}
        <tr>
            <td>
                {{ items.description }}
            </td>
            <td>
                {{ items.price }}
            </td>            <td>
                {{ items.quantity }}
            </td>            <td>
                {{ items.total }}
            </td>


        </tr>
    {%  endfor %}

    </table>
{% else %}
    Item is not saved yet
{% endif %}

【问题讨论】:

    标签: python django django-templates django-admin django-suit


    【解决方案1】:

    必须用related_name更改models.py

    class QuoteItem(models.Model):
        order = models.PositiveIntegerField()  # For Suit order sorting
        quote = models.ForeignKey(Quote, related_name='quote_set') <<
        description = models.CharField(max_length=200)
        quantity = models.IntegerField(default=0)
        price = models.DecimalField(max_digits=9, decimal_places=2)
    

    和 view_quote.html

    {% for item in original.quote_set.all %}
    <tr>
        <td>
            {{ item.description }}
        </td>
        <td>
            {{ item.price }}
        </td>            <td>
            {{ item.quantity }}
        </td>            <td>
            {{ item.total }}
        </td>
    
    
    </tr>
    {%  endfor %}
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-16
      • 2019-03-10
      • 2018-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多