user2307683
user2307683

Reputation: 2029

How to assign a file to the FileField in Django?

How to assign a file to the FileField in Django?

I try:

from django.core.files import File
...
...
att_path = os.path.join(detach_dir, filename)

if not os.path.isfile(att_path):
    fp = open(att_path, 'wb')
    djangofile = File(fp)
    fp.write(part.get_payload(decode=True))

    user = User.objects.get(id=1)
    files = File.objects.create(src=djangofile, user=user)
    fp.close()

but I have this error:

AttributeError: type object 'File' has no attribute 'objects'

models.py:

class File(models.Model):
    user = models.ForeignKey(User)
    src = models.FileField(upload_to="src")

Upvotes: 0

Views: 768

Answers (1)

Adrián
Adrián

Reputation: 6255

Change

class File(models.Model):
    user = models.ForeignKey(User)
    src = models.FileField(upload_to="src")

to:

class UserFile(models.Model):  # for example
    user = models.ForeignKey(User)
    src = models.FileField(upload_to="src")

and then create it like this:

files = UserFile.objects.create(src=djangofile, user=user)

from django.core.files import File is conflicting with from yourapp.models import File

One example on using FileFields.

Upvotes: 1

Related Questions