Dropbox のように、ユーザーがオンラインでファイルを保存できる Web アプリケーションを作成しています。ユーザーのファイルは、モデル Item によってモデル化されます。
from django.db import models
from django.contrib.auth.models import User
class Item(models.Model):
# Name of file
name = models.CharField(max_length=200)
# Site user who owns the file
user = models.ForeignKey(User)
# Path to file in database
# Python complains here since "username" is an attribute of the User class, not
# an attribute of ForeignKey.
file = models.FileField(upload_to=(user.username + '/' + name))
FileField の upload_to 引数を見ると、データベース内のファイルの保存場所を指定したいと思います。ファイル「myfile」を持つユーザー「bill」がいる場合、彼のファイルはパス「bill/myfile」の下にある必要があります。
この文字列を取得するために、「user.username + '/' + name」を試しましたが、python は、user は User オブジェクトではないため、user には属性 username がないと文句を言います。これは、User を格納する ForeignKey です。問題は、コード内で ForeignKey からユーザー オブジェクトを取得するにはどうすればよいかということです。
APIを使用する前にオブジェクトをデータベースに保存する必要があるため、DjangoのデータベースAPIは機能しません。Item オブジェクトの構築中にデータが必要なため、これは当てはまりません。