У меня есть 3 модели (проекты, сайты, устройства). И я пытаюсь импортировать устройства и настроен с ForeignKeyWedget, чтобы связать Project и Sites по имени (не pk). Когда я пытаюсь импортировать файл в формате csv, я не вижу ошибок и не вижу новых устройств в списке устройств. Можете посоветовать, если что-то отсутствует или не так? Спасибо
models.py
class Projects(models.Model):
Name = models.TextField(blank=False,default="Project Name")
StartDate = models.TextField(blank=False,default='dd/mm/yyyy')
EndDate = models.TextField(blank=False,default='dd/mm/yyyy')
def __str__(self):
return '{0}'.format(self.Name)
class Sites(models.Model):
Name = models.TextField(blank=False, default="Site Name")
Project = models.ForeignKey(Projects,on_delete=models.CASCADE)
def __str__(self):
#return 'SiteName:{} ---------------Country:{}'.format(self.Name, self.Country)
return '{0}'.format(self.Name)
class Devices(models.Model):
Name = models.TextField(blank=False, default='DeviceName')
IP = models.TextField(blank=False, default='x.x.x.x')
Project = models.ForeignKey(Projects,on_delete=models.CASCADE)
Site = models.ForeignKey(Sites,on_delete=models.CASCADE)
def __str__(self):
return '{0}'.format(self.Name)
resources.py
from import_export import resources, fields
from import_export.widgets import ForeignKeyWidget
from .models import *
class DeviceRecources(resources.ModelResource):
Project = fields.Field(
column_name='Project',
attribute='Project',
widget=ForeignKeyWidget(Projects, 'Name'))
Site = fields.Field(
column_name='Site',
attribute='Site',
widget=ForeignKeyWidget(Sites, 'Name'))
class Meta:
model = Devices
fields = ('Name','IP','Category','Project', 'Site','id')
view.py
def upload(request):
if request.method == 'POST':
devices = resources.modelresource_factory(model=Devices)()
dataset = Dataset()
new_devices = request.FILES['myfile']
imported_data = dataset.load(new_devices.read().decode('utf-8'),format='csv')
result = devices.import_data(dataset, dry_run=True) # Test the data import
if not result.has_errors():
print('No errorrrrr')
print(dataset)
devices.import_data(dataset, dry_run=False) # Actually import now
return redirect(devicesview)
else:
return render(request,'import.html')
Отладочный вывод введите описание изображения здесь