Экспорт CSV из Django Подробный вид - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь экспортировать данные из браузера в подробном представлении Django. DetailView относится к модели OsmoClient, а данные, которые я хотел бы экспортировать, находятся в модели FinancialData, которая связана с OsmoClient с помощью Foreignkey.

models.py

class OsmoClient(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    client_code = models.CharField(max_length=250, blank=True)
    osmo_client_ref = models.CharField(max_length=250, blank=True)

    def __str__(self):
        return self.client_code

    def get_absolute_url(self):
        #used to create a unique URL page for each object
        return reverse('osmoclient-detail',args=[str(self.id)])

    def get_fields(self):
        #Needed so that we can iterate over the fields in the html view, rather than typing them out.
        return [(field.verbose_name, field.value_from_object(self)) for field in self.__class__._meta.fields]

class FinancialData(models.Model):
    osmo_client = models.ForeignKey(OsmoClient, on_delete=models.CASCADE)
    bank_balance = models.IntegerField()
    sales_balance = models.IntegerField()
    daily_movement_in_sales = models.IntegerField()
    trade_debtors_balance = models.IntegerField()
    trade_creditors_balance = models.IntegerField()
    date_created = models.DateTimeField(auto_now_add = True)

    class Meta:
        verbose_name_plural = "Financial Data"
        unique_together = ['osmo_client', 'date_created'] #Needed so that each client can only have one set of financial data per day
        ordering = ['osmo_client']

    def __str__(self):
        return str(self.osmo_client) + str(self.date_created)

    def get_absolute_url(self):
        #Used to generate a unique URL page for each object
        return reverse('financialdata-detail', args=[str(self.id)])

    def get_fields(self):
        #Needed so that we can iterate over the fields in the html view, rather than typing them out.
        return [(field.verbose_name, field.value_from_object(self)) for field in self.__class__._meta.fields] 

просмотров. py

class OsmoClientDetailView(generic.DetailView):
    model = OsmoClient

osmoclient_detail. html

  <table>  
      <tr>
        <th>Date</th>
        <th>Cash</th>
        <th>Sales</th>
        <th>Sales Change</th>
        <th>Trade Debtors</th>
        <th>Trade Creditors</th>
      </tr>

      {% for financialdata in osmoclient.financialdata_set.all %}
      <tr align ='right'>
        <td>{{ financialdata.date_created|date:"d/m/y" }}</td>
        <td>{{ financialdata.bank_balance }}</td>
        <td>{{ financialdata.sales_balance }}</td>
        <td>{{ financialdata.daily_movement_in_sales }}</td>
        <td>{{ financialdata.trade_debtors_balance }}</td>
        <td>{{ financialdata.trade_creditors_balance }}</td>
      </tr>
      {% endfor %}



   </table>

Данные в таблице на странице osmoclient_detail. html - это то, что я хотел бы экспортировать. Я посмотрел на другие ресурсы для экспорта в csv, но все они предназначены для полного набора данных, а не для фильтрации, чтобы показать только осмоклиент, на котором находится текущая веб-страница.

Любой совет с благодарностью!

...