質問

REST Frameworkを搭載したMy Userオブジェクトには、avatar_idcover_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
.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top