【问题标题】:Django FileNotFoundError when trying to add an item to a model尝试将项目添加到模型时出现 Django FileNotFoundError
【发布时间】:2021-12-27 09:55:34
【问题描述】:

我正在尝试使用 Django 和 python 创建一些模型。我所有的模型都在工作,我可以向模型添加项目,除了我的用户模型。谁能建议它有什么问题?

models.py

from django.db import models

# Create your models here.

class Item(models.Model):
    ID = models.IntegerField(auto_created=True, primary_key=True, unique=True)
    Name = models.CharField(max_length=30)
    Price = models.IntegerField()


class User(models.Model):
    ID = models.IntegerField(auto_created=True, primary_key=True)
    Nickname = models.CharField(max_length=50)
    Password = models.CharField(max_length=200)
    Mail = models.EmailField()
    Points = models.IntegerField()
    SaleItem = models.ForeignKey(Item, on_delete=models.CASCADE)
    ProfilePic = models.FilePathField()
    BannerPic = models.FilePathField()
    ZodiacSign = models.CharField(max_length=50)


class Friendship(models.Model):
    ID = models.IntegerField(auto_created=True, primary_key=True, unique=True)
    UserID = models.ManyToManyField(User, related_name="user")
    FriendID = models.ManyToManyField(User, related_name="befriended_user")


class ThreadPrivate(models.Model):
    ID = models.IntegerField(auto_created=True, primary_key=True, unique=True)
    Text = models.TextField()
    Sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name="Sender")
    Receiver = models.ForeignKey(User, on_delete=models.CASCADE, related_name="Receiver")
    Time = models.DateTimeField(auto_now_add=True)


class Side(models.Model):
    ID = models.IntegerField(auto_created=True, primary_key=True, unique=True)
    Creator = models.ForeignKey(User, on_delete=models.CASCADE, related_name="creator_of_page")
    Time = models.DateTimeField(auto_now_add=True)


class ThreadPublic(models.Model):
    ID = models.IntegerField(auto_created=True, primary_key=True, unique=True)
    Text = models.TextField()
    Time = models.DateTimeField(auto_now_add=True)
    Sender = models.ForeignKey(User, on_delete=models.CASCADE, related_name="thread_sender")
    SideID = models.ForeignKey(Side, on_delete=models.CASCADE, related_name="side_for_thread")

和 admin.py

from django.contrib import admin
from .models import *
# Register your models here.

admin.site.register(Item)
admin.site.register(User)
admin.site.register(Friendship)
admin.site.register(ThreadPrivate)
admin.site.register(Side)
admin.site.register(ThreadPublic)

我记得在 settings.py 等中添加到 APPS。所有模型工作, 除了用户模型。有什么想法吗?

错误图片:

【问题讨论】:

    标签: python django


    【解决方案1】:

    您必须提供用户模型的 FilePathField 的路径。根据this answer,您可以在设置中创建变量 FILE_PATH_FIELD_DIRECTORY,然后像这样使用它:

    from django.conf import settings
    
    class User(models.Model):
        ProfilePic = models.FilePathField(path=settings.FILE_PATH_FIELD_DIRECTORY)
    

    将您的类名称更改为 CustomUser 会很有帮助,因此您不要将其与 django 中的 User 类混淆。

    【讨论】:

    • 非常感谢!我什至不知道 Django 也有一个 User 类!谢谢,问题已经解决了
    猜你喜欢
    • 2012-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-04
    • 2020-06-11
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-05-24
    相关资源
    最近更新 更多