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