Thank you for your suggestion. I will use the username, as it is unique as well.
Best, Mislav Dana ponedjeljak, 14. rujna 2020. u 19:45:36 UTC+2 korisnik coolguy napisao je: > 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/c31fe37b-fb3d-4333-b16f-f6667204530bn%40googlegroups.com.

