我在想如何在另一個模型中訪問用戶的數據?例如,這是我目前的情況。在Django模型中訪問經過身份驗證的用戶信息
- 用戶擁有公司的外鍵;所以用戶與公司相關聯。
- 我已經實現了一個文件上傳頁面。此頁面使用自定義存儲解決方案,將文件上傳到Amazon S3。 (它基於S3BotoStorage)。
- 在此構造函數中,我想訪問與該公司關聯的bucket_name,該公司與用戶鏈接。我的所有用戶都必須登錄才能使用上傳頁面。
- 因此:登錄用戶擁有公司的foreignKey,公司擁有bucket_name。登錄用戶在文件上傳頁面。
這是視圖:
class PictureCreateView(CreateView):
model = Picture
def __init__(self, *args, **kwargs):
super(PictureCreateView, self).__init__(*args, **kwargs)
def form_valid(self, form):
self.object = form.save()
self.request.FILES.get('file')
data = [{'name': f.name, 'url': settings.MEDIA_URL + "pictures/" + f.name.replace(" ", "_"), 'thumbnail_url': settings.MEDIA_URL + "pictures/" + f.name.replace(" ", "_"), 'delete_url': reverse('upload-delete', args=[self.object.id]), 'delete_type': "DELETE"}]
response = JSONResponse(data, {}, response_mimetype(self.request))
response['Content-Disposition'] = 'inline; filename=files.json'
return response
這是圖片模型(文件模型或其他)
from django.core.files.storage import default_storage as s3_storage
class Picture(models.Model):
def custom_upload_to(instance, filename):
return 'pictures/' + filename
def save(self, *args, **kwargs):
super(Picture, self).save(*args, **kwargs)
file = models.FileField(storage=s3_storage,upload_to=custom_upload_to)
這是我設置爲我default_storage存儲模型在settings.py中:
from storages.backends.s3boto import S3BotoStorage
class customStorage(S3BotoStorage):
def __init__(self, *args, **kwargs):
kwargs['bucket'] = ***HERE-I-WANT-TO-GET-COMPANY'S-BUCKET***
super(customStorage, self).__init__(*args, **kwargs)
從from或template,我可以通過它有一個參數,並在以後檢索它?我可以直接在模型中檢索這些信息嗎?任何想法如何做到這一點?
謝謝!
編輯:這與用戶這樣做,因爲用戶將包含ForeignKey的將它連接到該公司,而該公司將包含有關桶...
編輯#2:我只是想self.object.user = self.request.user在form_save中,它的工作原理,但我怎麼能超越這個,並訪問我用UserProfile類擴展用戶時添加的字段?例如:
self.object.user = self.request.user
self.company = self.object.user.company.bucket
因此,公司是用戶擴展配置文件中的foreign_key,並且公司包含存儲區字段。
我真的很困惑。這與用戶有什麼關係?您可以通過self.request.user從form_valid()獲取當前用戶。那是你的追求? – Paragon
查看編輯瞭解更多信息!感謝 – abisson
你在找'user.get_profile()'? https://docs.djangoproject.com/en/1.4/topics/auth/#django.contrib.auth.models.User.get_profile – rantanplan