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 [email protected] 
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 [email protected] 
>> 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 
>>>> [email protected] 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 
>>>>>> [email protected] 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 [email protected].
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