我的用户休息框架对象有一个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的教程 ,说明如何定义模型。 User.cover_id和UserAvatar.file_id应该被定义为ForeignKey的。 如果您不知道外键是什么,然后停止使用Django打之前读取的数据库教程。
- 目前已经是一个模型和一组类来管理用户在Django。 你应该使用它们。 例如,“用户简档”是正确的方式延伸的用户模型 。
- 如果强制用户选择的一组预定义的化身的一个化身,那么你想要做什么就可以了。 如果用户可以选择任何头像(上传),那么你应该使用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