簡體   English   中英

外鍵與用戶模型上傳一起使用

[英]Foreign key use with user model upload

這些是我的模型,一個用戶可以上傳多個視頻,但是一個視頻僅屬於一個用戶。 在這里如何使用外鍵概念? 添加用戶時,這會自動在視頻模型中添加用戶名嗎? 如果沒有,我該怎么辦? 我在這里剛來django

class User(models.Model):
    first_name=models.CharField(max_length=20)
    last_name=models.CharField(max_length=20)
    username=models.CharField(max_length=25, primary_key=True)
    password=models.CharField(max_length=15)
    email_id=models.CharField(max_length=30, default='NULL')
    profile_pic=models.ImageField(upload_to='profilepics/%Y/%m/%d/',default='')

def __str__(self):
    return self.username

class Video(models.Model):
    username=models.ForeignKey(User,on_delete=models.CASCADE,default="")
    video=models.FileField(upload_to='videos/%Y/%m/%d/',default='')
    videotitle=models.CharField(max_length=100)
    likes=models.PositiveIntegerField(default=0)
    dislikes=models.PositiveIntegerField(default=0)

    def __str__(self):
        return self.video

嘗試以下

from django.db import models
from django.conf import settings

class Video(models.Model):
    ...
    username = models.ForeignKey(settings.AUTH_USER_MODEL)

而不是直接引用用戶,您應該使用django.contrib.auth.get_user_model()引用用戶模型。 此方法將返回當前活動的用戶模型-如果指定了自定義用戶模型,則返回用戶模型,否則返回用戶。

可以在這里找到更多信息: https : //docs.djangoproject.com/en/1.8/topics/auth/customizing/#referencing-the-user-model

不,它不會自動執行-以及如何執行。 您需要傳遞用戶。 同樣,您絕對不想添加用戶名,而是要添加對User對象的引用。 這在代碼中具有誤導性,因為您在Video類中有一個“用戶名”,因此,它不僅是名稱(字符串),而且是ForeignKey -添加新視頻時對對象User的引用。 因此,添加視頻時需要做的事情大致如下:

def add_new_video(username, filename, title):
    owner = User.objects.get(username=username)
    newvid = Video(username=owner, video=filename, videotitle=title)
    newvid.save()

假設以后會添加喜歡和不喜歡...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM