投稿のタイトルが正しいかどうかわかりません。私は何をしたいのかを説明し、何が最善の方法かを教えてくれるでしょう。外部キーとしてuuidを使用するDjangoのレストフレームワークを持つDjangoのモデルのキー
Userモデルのフィールドに「ID」(Int)を主キー、「uuid」(uuid)をフィールドとして使用したいとします。だから、私はテーブルを "id"とリンクしたいのですが、それは高速ですが、フロントエンドはちょっと安全だから "uuid"と "id"を見ないようにしたいと思います。
私の問題は、私が "メッセージ"モデルを持っていることです。
class Message(models.Model):
created = models.DateTimeField(auto_now_add=True)
type = models.CharField(_('type'), choices=MESSAGE_TYPE, default='Invitation', max_length=100)
content = models.TextField(_('content'), blank=False)
sender = models.ForeignKey(User, related_name='sender_message', verbose_name=_("Sender"),)
recipient = models.ForeignKey(User, related_name='receiver_message', null=True, blank=True,
verbose_name=_("Recipient"))
url_profile_image = models.URLField(_('url_profile_image'), max_length=500, blank=True, default='')
class Meta:
ordering = ('created',)
をそして、あなたは、「送信者」及び「受信者」を見ることができるようForeignKeyのと私のユーザーにリンクされている:それはそう見えます。しかし、ForeignKeyはユーザーIDとして返されます。
{
"url": "http://127.0.0.1:8000/users/messages/4/",
"id": 4,
"type": "invitation_accepted",
"content": "Sure",
"sender": 4,
"recipient": 1,
"url_profile_image": ""
}
4は「送信者」のIDであり、1は「受信者」のIDです。しかし、私はフロントエンドが送信者の "uuid"と受信者の "uuid"だけを見たいと思っています。
私のシリアライザはそうなります。だから、
class MessageSerializer(serializers.ModelSerializer):
class Meta:
model = Message
fields = ('url', 'id', 'type', 'content', 'sender', 'recipient', 'url_profile_image')
、私は多分、私がやりたいことには二つの方法がそこにいると思いました。
外部キーとしてuuidを使用するか、シリアライザで何かを行い、ユーザーのuuidを取得して「送信者」と「受信者」に返します。
私の見解は非常に簡単です:
class MessageViewSet(viewsets.ModelViewSet):
queryset = Message.objects.all()
serializer_class = MessageSerializer
(それはクレイジーに見えますが、それはそう:)メッセージのようなものがプライベートではないですが、クエリセットを心配しないでください:D)たぶん
誰かが私を助けることができます。
甘いを試すことができます。ありがとう!それが動作するかどうかは分かりませんでした。 –