<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">Il giorno 21 aprile 2015 11:27, Marco De Paoli <span dir="ltr"><<a href="mailto:depaolim@gmail.com" target="_blank">depaolim@gmail.com</a>></span> ha scritto:<br><br></div><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div>P.S. ... se posso posto lo snippet finale con anche la gestione delle FK<br></div></div></div></div></blockquote><div class="gmail_extra"><br>ecco qua:<br><br>@django.db.transaction.atomic                                                              <br><div class="gmail_quote">def load_from_xlsx(cls, rows):<br>    fs = {c.column: cls.XLSX_2_FIELDS.get(c.value) for c in rows[0]}<br>    cls.objects.all().delete()<br>    cls.objects.bulk_create([<br>        cls(**{fs[c.column].get_attname(): c.value for c in r if fs[c.column]})<br>        for r in rows[1:]]<br>    )<br><br><br>Ed ecco un esempio d'uso:<br><br>wb = openpyxl.load_workbook("myfile.xlsx")                                 <br>load_from_xlsx(MyModel, wb.active.rows)<br></div><br></div></div></div><div class="gmail_extra"><br>L'unica altra cosa che serve è che MyModel abbia l'attributo XLSX_2_FIELDS<br>per stabilire la rimappatura tra: nomi delle colonne xlsx e nomi dei field<br><br>Ecco un gist con il codice completo di test cases<br><a href="https://gist.github.com/depaolim/1dfd6e3d3789047c36b1">https://gist.github.com/depaolim/1dfd6e3d3789047c36b1</a><br><br></div><div class="gmail_extra"></div><div class="gmail_extra">ciao,<br></div><div class="gmail_extra">Marco<br></div></div>