Я получаю следующее сообщение об ошибке при попытке создать FilepathДжанго KeyError при попытке форматирования ForeignKey
filepath = '{comp}/utils/locndb/{vehdir}.{filename}'.format(comp,vehdir, filename)
KeyError: 'comp'
Я не знаю, как извлечь строку из один ко многим ForeignKey поле
extra.py
def get_file_path(vehicle, filename):
filepath = ''
vehdir = vehicle.vehid
print vehdir
comp = getattr(vehicle.company, 'user', None)
print comp
filepath = 'optiload/{comp}/utils/locndb/{vehdir}.{filename}'.format(comp,vehdir, filename)
print filepath
return filepath
views.py
@login_required
def loadlocndb(request):
if request.method == "POST" and request.FILES['locndb']:
pks = request.POST.getlist("update")
selected_objects = Vehicle.objects.filter(pk__in=pks)
vlist = []
for i in selected_objects:
vlist.append(i)
locnfile = request.FILES['locndb']
fs = FileSystemStorage()
filename = fs.save(locnfile.name, locnfile)
filename = get_file_path(i, filename)
uploaded_file_url = fs.url(filename)
return render(request, 'portal/loadlocndb.html',{"vlist":vlist, "uploaded_file_url": uploaded_file_url})
models.py
# Create your models here.
class UserProfile(models.Model):
# This line is required. Links UserProfile to a User model instance.
user = models.OneToOneField(User)
# The additional attributes we wish to include.
compName = models.CharField(max_length = 20)
milkco = models.IntegerField()
# Override the __unicode__() method to return out something meaningful!
def __unicode__(self):
return self.user.username
class Vehicle(models.Model):
vehid = models.CharField(max_length = 10)
company = models.ForeignKey(UserProfile, default = 1)
#depot = models.ForeignKey(Depot, default = 1)
locndb = models.FileField(upload_to='optload/', default= "setting.MEDIA_ROOT/locndb/LocnDB.csv")
class Meta:
db_table = "vehicle"
def __unicode__(self):
return self.vehid
Я хочу, чтобы импортировать и сохранить файл в FilePath /optiload/{customer}/utils/locndb/{vehicle}/{filename}
есть лучший способ сделать это, чем, как я в настоящее время?
я видел, что ... спасибо бутон – Jim