2014-01-11 39 views
0

我的用戶對象與其餘框架有avatar_idcover_id。但不是將其顯示給API,我希望它已成爲實際的頭像網址和封面網址。與Django的關係和其餘框架添加替換字段

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

如何從/users/的結果中刪除avatar_id並添加一個具有實際頭像文件名的頭像字段?

+0

15天以後,如果我的回答對你有幫助,你能回答嗎?如果確實如此,請投票和/或設置爲已回答。 – Nil

回答

1

我不知道我是否正確理解你的問題,但在這裏我認爲問題是。讀你的問題,我認爲你是一個初學者,所以我這樣回答。對不起,如果不是這樣的話。

  • 你不需要添加id字段,它是由Django自動完成的,因爲所有的表都需要一個主鍵。只有當你需要命名「id」以外的其他名稱時才定義PK。
  • 您應該仔細閱讀Django tutorial,它解釋瞭如何定義模型。 User.cover_id和UserAvatar.file_id應該被定義爲ForeignKey。如果您不知道外鍵是什麼,那麼請停止使用Django並閱讀數據庫教程。
  • 在Django中已經有一個模型和一組類manage your users。你應該使用它們。例如,「用戶配置文件」是extend the user model的正確方法。
  • 如果你強制用戶在一組預定義的頭像中選擇一個頭像,那麼你想要做的就是確定。如果用戶可以選擇任何頭像(上傳),那麼您應該使用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