django将额外参数传递到foreignkey字段
我有这样的模型:django将额外参数传递到foreignkey字段,django,Django,我有这样的模型: class Profile(models.Model, DictMixin): user = models.ForeignKey(settings.AUTH_USER_MODEL, models.CASCADE, related_name="profile") display_name = models.CharField(max_length=30) avatar = models.ForeignKey(MyMedia, models.CASCADE,
class Profile(models.Model, DictMixin):
user = models.ForeignKey(settings.AUTH_USER_MODEL, models.CASCADE, related_name="profile")
display_name = models.CharField(max_length=30)
avatar = models.ForeignKey(MyMedia, models.CASCADE, related_name="avatar", type="profile")
class MyMedia(models.Model):
media = models.FileField(upload_to="some_dynamic_folder")
在这里,我有一个MyMedia与avatar的ForeignKey
关系。
当我上传文件时,我希望它保存到我作为参数传递给ForeignKeyField或Manytomanyfield的特定文件夹
假设所有配置文件图片都应保存在profile\u picture
字段中,所有内容都应保存在content
文件夹中
有可能这样做吗
需要一些建议:)如果我理解了,您希望将MyMedia文件保存在一个文件夹中还是另一个文件夹中取决于类型?如果是这样,首先可以为MyMedia定义一个类型字段,以区分一种类型或另一种类型。设置后,如果将upload_to参数设置为函数,则可以操作文件夹。大概是这样的:
def some_dynamic_folder(instance, filename):
type = instance.type
if type == "profile":
return "profile_folder/{}".format(filename)
elif type == "content":
return "content_folder/{}".format(filename)
class MyMedia(models.Model):
TYPES = (
("profile", "Profile picture"),
("content", "Content picture")
)
media = models.FileField(upload_to=some_dynamic_folder)
type = models.CharField(max_length=10, choices=TYPES)
然后,每次上传文件时,它都会检查一些动态文件夹功能,并根据类型返回所需的文件夹
希望这有帮助 我猜你也在尝试我想要的帮助:D