gpt4 book ai didi

python - django - 同一用户不能多次保存模型

转载 作者:太空宇宙 更新时间:2023-11-04 03:19:10 25 4
gpt4 key购买 nike

我创建了一个模型来存储轨道信息、mp3、png 和一个 slug 以及与模型关联的用户名。

我可以很好地保存模型,但是当我尝试保存另一个模型时(这样就有两个模型具有相同的用户名),django 告诉我“Track with this User already exists!”

我不想这样,我希望能够为同一用户保存任意数量的模型。

这是我的models.py(我已经在管理面板注册了)

from django.db import models
from django.core.exceptions import ValidationError
from django.core.files.images import get_image_dimensions
from django.contrib.auth.models import User

# Create your models here.


class Track(models.Model):

def generate_user_folder_tracks(instance, filename):
return "uploads/users/%s/tracks/%s.mp3" % (instance.user, instance.slug)

def is_mp3(self):
if not self.name.endswith('.mp3'):
raise ValidationError(u'You may only upload mp3 files for tracks!')

def generate_user_folder_art(instance, filename):
return "uploads/users/%s/art/%s.png" % (instance.user, instance.slug)

def is_square_png(self):
if not self.name.endswith('.png'):
raise ValidationError("You may only upload png files for album art!")
else:
w, h = get_image_dimensions(self)
if not h == w:
raise ValidationError("This picture is not square! Your picture must be equally wide as its height.")
else:
if not (h + w) >= 1000:
raise ValidationError("This picture is too small! The minimum dimensions are 500 by 500 pixels.")
return self


# Variables

track_type_choices = [
('ORG', 'Original'),
('RMX', 'Remix'),
('CLB', 'Collab'),
('LIV', 'Live'),
]

# Model Fields
user = models.ForeignKey(User, unique=True)
title = models.CharField(max_length=100)
desc = models.TextField(max_length=7500)
track_type = models.CharField(max_length=3,
choices=track_type_choices,
default='ORG')

track_type_content = models.CharField(max_length=100,blank=True)
created = models.TimeField(auto_now=True,auto_now_add=False)

upload = models.FileField(upload_to=generate_user_folder_tracks,validators=[is_mp3])
albumart = models.ImageField(upload_to=generate_user_folder_art,validators=[is_square_png])

slug = models.SlugField(max_length=50)

知道这里发生了什么吗?

最佳答案

user = models.ForeignKey(User, unique=True)

unique = true 意味着每个模型都需要有不同的用户。这类似于 Django 的 OneToOne field .

确保你运行

python manage.py makemigrations

python manage.py migrate

关于python - django - 同一用户不能多次保存模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35236350/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com