Python 外键与用户模型上载一起使用

Python 外键与用户模型上载一起使用,python,django,foreign-keys,models,Python,Django,Foreign Keys,Models,这些是我的模型,一个用户可以上传多个视频,但一个视频只属于一个用户。我如何在这里使用外键概念?当我添加用户时,这会自动在视频模型中添加用户名吗?如果没有,我该怎么做?我对这里的django很陌生 class User(models.Model): first_name=models.CharField(max_length=20) last_name=models.CharField(max_length=20) username=models.CharField(max

这些是我的模型,一个用户可以上传多个视频,但一个视频只属于一个用户。我如何在这里使用外键概念?当我添加用户时,这会自动在视频模型中添加用户名吗?如果没有,我该怎么做?我对这里的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\u User\u model()引用用户模型,而不是直接引用用户。此方法将返回当前活动的用户模型–如果指定了自定义用户模型,则返回自定义用户模型,否则返回用户模型


更多信息可以在这里找到:

不是,它不会自动完成——它将如何做到这一点。您需要传递给用户。另外,您肯定不想添加用户名,而是要添加对用户对象的引用。这在代码中是误导性的,因为在视频类中有一个“用户名”,它实际上不仅仅是一个名称(字符串),而是一个ForeignKey——在添加新视频时对对象用户的引用。因此,添加视频时需要执行以下操作:

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

假设以后会添加喜欢和不喜欢的内容…

看看这个…好啊阅读@Niels的帖子,如果你想添加当前登录的用户,可以自动填写。。。但这不是问题的一部分…谢谢。知道了。视频正在正确上传