DjangoとRESTフレームワークとの関係置換フィールドを追加
-
26-12-2019 - |
質問
REST Frameworkを搭載したMy Userオブジェクトには、avatar_id
とcover_id
があります。しかしAPIにそれを表示する代わりに、私はそれを実際のアバターURLとすでにカバーするようにしたいです。
私のUser
モデル:
avatar_id = models.IntegerField()
cover_id = models.IntegerField()
.
私のUserAvatar
モデル:
id = models.IntegerField(primary_key=True)
user_id = models.IntegerField()
file_id = models.IntegerField()
.
私のFiles
モデル:
id = models.IntegerField(primary_key=True)
filename = models.CharField(max_length=255)
.
UserCover
と同じ概念
avatar_id
の結果から/users/
を削除し、実際のアバターファイル名を指定してアバターフィールドを追加しますか?
解決
私はあなたの質問を正しく理解しているわからないが、ここで問題があると思います。あなたの質問を読んで、私はあなたが初心者であると仮定しました、それで私はそのように答えました。ケースではない場合は申し訳ありません。
- IDフィールドを追加する必要はありません。すべてのテーブルが主キーを必要とするため、Djangoによって自動的に行われます。 PKを定義してください。
- 本当に Django Tutorial モデルを定義する方法user.cover_idおよびuseravatar.file_idは、外部キーとして定義する必要があります。外部キーが何であるかわからない場合は、Djangoで遊ぶのをやめて、以前にデータベースのチュートリアルを読んでください。
- あなたのユーザーを管理するを管理するDjangoで。あなたはそれらを使うべきです。たとえば、「ユーザープロファイル」はユーザーモデルを拡張します。
- あなたが定義済みのアバターのセットで1つのアバターを選ぶように強制するならば、あなたがやりたいことはOKです。ユーザーがアバター(アップロード)を選択できる場合は、 OneTooneFieldを使用する必要があります。 またはユーザーモデル(またはプロファイル)に直接それを置く。
UserCover
とは何ですか。しかし、これがあなたのモデルが次のように見えるものです:
from django.contrib.auth.models import User
class UserProfile(models.Model):
# Link to Django normal User (name, email, pass)
user = models.ForeignKey(User, unique=True)
# Any information that a user needs, like cover, wathever that is, age, sexe, etc.
avatar = models.CharField(max_length=255)
.
またはこのようなものが頻繁に再利用される場合:
class Avatar(models.Model):
# name = ...
# description = ...
path = models.CharField(max_length=255)
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
avatar = models.ForeignKey(Avatar, unique=True)
# other data
. 所属していません StackOverflow