If i had to stick to your code then i would save the file with 
instance.username. username is available and folder would be readable as 
well.

However, as i mentioned in my last reply and seems you agreed, 
save/register the employee and then have employee upload the picture.

On Monday, September 14, 2020 at 8:20:21 AM UTC-4 mislav....@gmail.com 
wrote:

> What I can do is first register the employee via a register form, then 
> once he logs in ask him/her for the profile picture. *Can I do that this 
> way? *
>
> If I do it this way, I don't have to change my model in any way.
>
> Dana nedjelja, 13. rujna 2020. u 18:11:18 UTC+2 korisnik coolguy napisao 
> je:
>
>> not sure about the purpose of showing that example in Django 
>> documentation while its comments are clear that "object will not have been 
>> saved to the database yet, so if it uses the default AutoField, *it 
>> might not yet have a value for its primary key field*."
>>
>> so that's the reason for having None with file path.
>>
>> In this approach what i can see is to save the employee first without 
>> file and then edit and select the file.
>>
>> I would not use this approach and rather keep it simple as followed:
>>
>> photo = models.ImageField(upload_to='employee/%Y/%m/%d/', blank=True)
>>
>> On Sunday, September 13, 2020 at 5:41:18 AM UTC-4 mislav....@gmail.com 
>> wrote:
>>
>>> Hey coolguy,
>>>
>>> thanks for responding. After I changed that line as you suggested that 
>>> error is solved, *but when I add the user through the admin interface, 
>>> I get None as the ID* (the folder that gets created in the 
>>> */media/users* is titled *None*). I'm not sure if this is expected 
>>> behavior.
>>>
>>> I haven't added the registration or the login yet, so maybe the ID gets 
>>> a value when someone is actually registering.
>>>
>>> Let me know.
>>>
>>> Best,
>>> Mislav
>>>
>>> Dana subota, 12. rujna 2020. u 21:57:21 UTC+2 korisnik coolguy napisao 
>>> je:
>>>
>>>> I wanted to see your model to understand but i realized after my last 
>>>> post that you are using "instance.user.id" while your employee 
>>>> instance does not have user field. (had to go somewhere urgently) >>> 
>>>> return "employees/media/users/{0}/profile_picture.{1}".format(
>>>> instance.user.id, extension)  
>>>>
>>>> change it as follow and remove user from it.
>>>> return "employees/media/users/{0}/profile_picture.{1}".format(
>>>> instance.id <http://instance.user.id/>, extension)  
>>>>
>>>> It should work...
>>>>
>>>> On Saturday, September 12, 2020 at 3:17:28 PM UTC-4 
>>>> mislav....@gmail.com wrote:
>>>>
>>>>> coolguy here is the complete Employee model:
>>>>>
>>>>> class Employee(models.Model): #TODO: Double-check this
>>>>>     username = models.CharField(max_length=50, unique=True)
>>>>>     email = models.EmailField()
>>>>>     password = models.CharField(max_length=50)
>>>>>     first_name = models.CharField(max_length=150)
>>>>>     last_name = models.CharField(max_length=100)
>>>>>     website = models.URLField(max_length=200, blank=True)
>>>>>
>>>>>     profile_picture = models.ImageField(upload_to=get_upload_path, 
>>>>> blank=True, null=True)
>>>>>     
>>>>>     def __str__(self):
>>>>>         return str(self.first_name) + str(self.last_name)
>>>>>
>>>>> *Why do I need the foreign key to User in the first place?* I don't 
>>>>> recall seing the foreign key to User in any one of the tutorials.
>>>>> Dana subota, 12. rujna 2020. u 20:20:11 UTC+2 korisnik coolguy napisao 
>>>>> je:
>>>>>
>>>>>> Please share the complete employee model. It seems you are missing 
>>>>>> User foreign key in it.
>>>>>>
>>>>>> On Saturday, September 12, 2020 at 2:03:20 PM UTC-4 
>>>>>> mislav....@gmail.com wrote:
>>>>>>
>>>>>>> Hey guys,
>>>>>>>
>>>>>>> I have the following code in models.py file in one of my apps:
>>>>>>>
>>>>>>> def get_upload_path(instance, filename):
>>>>>>>     extension = filename.split('.')[-1]
>>>>>>>     return "employees/media/users/{0}/profile_picture.{1}".format(
>>>>>>> instance.user.id, extension)
>>>>>>>
>>>>>>> class Employee(models.Model):
>>>>>>>     # some attributes here
>>>>>>>     profile_picture = models.ImageField(upload_to=get_upload_path, 
>>>>>>> blank=True, null=True)
>>>>>>>
>>>>>>> I am getting the following error when I try to add an Employee via 
>>>>>>> the admin interface:
>>>>>>>
>>>>>>> AttributeError at /admin/employees/employee/add/
>>>>>>>
>>>>>>> 'Employee' object has no attribute 'user'
>>>>>>>
>>>>>>> *I don't know where this error is stemming from.* I took the 
>>>>>>> get_upload_path function from the official Django FIleField 
>>>>>>> documentation 
>>>>>>> <https://docs.djangoproject.com/en/3.1/ref/models/fields/#filefield>
>>>>>>> .
>>>>>>>
>>>>>>> Any ideas as to what is going on here?
>>>>>>>
>>>>>>> Best,
>>>>>>> Mislav
>>>>>>>
>>>>>>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/0b48c872-8899-49d1-bc5a-e556d16dba16n%40googlegroups.com.

Reply via email to