Как использовать виджет даты в django -import-export? - PullRequest
0 голосов
/ 17 марта 2020

Я новичок в программировании, поэтому, пожалуйста, потерпите меня, если я задаю глупые вопросы. Я работаю над своим первым проектом, который будет собирать данные из файла Excel. Я пытаюсь django -import-export для этой цели, но столкнулся с проблемой с полем, содержащим дату. Насколько я мог понять при поиске этой проблемы, мне нужно использовать виджет даты, потому что он в основном читает его как строку при импорте. Но я не смог найти ни одного примера, где используется этот виджет, чтобы я мог видеть его синтаксис. Модель, над которой я работаю, показана ниже. Надеюсь, что некоторые из вас могут помочь мне в этом. Спасибо.

from django.db import models
from import_export.admin import ImportExportModelAdmin
from import_export import widgets

class Employee(models.Model):
    name = models.CharField(max_length=200)
    badge = models.CharField(max_length=15)
    start_date = models.DateField(auto_now=False, auto_now_add=False, blank=False, null=True,widget=widgets.DateWidget(format=None))
    end_date = models.DateField(auto_now=False, auto_now_add=False, blank=True, null=True)
    status = models.BooleanField(choices=(
        (True, 'Active'), 
        (False, 'Inactive')
        ), default=True)
    job = models.ForeignKey(Matrix, on_delete=models.CASCADE, blank=True, null=True)
    location = models.ForeignKey(Location, on_delete=models.CASCADE, blank=True, null=True)

    def __str__(self):
        return str(self.badge)+ str(" - ") + str(self.name)
    class Meta:
        ordering=('name', 'badge', 'start_date', 'status',)
        verbose_name='Employee'
        verbose_name_plural='Employees'

1 Ответ

0 голосов
/ 20 апреля 2020

Сначала необходимо создать ресурс:

from import_export import resources

class EmployeeResource(resources.ModelResource):
    start_date = Field(attribute='start_date', column_name='<column_name>', widget=DateWidget('<date_format>')) 
    ...
    class Meta:
        model = Employee
        fields = ('start_date',...)

Где <column_name> - это имя столбца, а <date_format> - это формат входящей даты, например: '% d / % m /% Y '

Затем в вашем admin.py вам нужно связать modeladmin с ресурсом

class EmployeeAdmin(ImportExportMixin, admin.ModelAdmin):
    resource_class = EmployeeResource
...