Как добавить динамическое поле в модель в Django? - PullRequest
1 голос
/ 13 мая 2010

Я использую django для создания сайта загрузки приложений. Я пытаюсь написать модель, чтобы администратор мог динамически добавлять различный загружаемый контент на странице администратора. Например, у меня есть программное обеспечение с именем foobar, оно имеет 3 разные версии: 1.1, 1.2, 1.3. Я хотел бы, чтобы пользователь мог администрировать модель, используя кнопку добавления, чтобы добавить ссылку для скачивания с версией для скачивания. Но я не знаю, как это сделать в Джанго.

1 Ответ

1 голос
/ 13 мая 2010

Настройте свои модели, чтобы иметь основную модель и вспомогательные модели, которые имеют внешние ключи к основной модели:

class DownloadItem(models.Model):

   name = models.CharField( etc etc)
   ... other attributes here ...


class DownloadItemFile(models.Model):
   parent = models.ForeignKey('DownloadItem', related_name="versions")
   version = models.CharField( etc etc)
   file = models.FileField(upload='path/to/uploaddir/')

затем, когда у вас есть экземпляр вашей модели DownloadItem, вы можете получить различные версии файлов с помощью:

mydownloaditem.versions.all()

Чтобы иметь возможность добавлять файлы через администратора, вам нужно будет использовать встроенный. В ваш admin.py для рассматриваемого приложения вам нужно добавить что-то вроде:

class DownloadItemFileInline(admin.TabularInline):
    model           = DownloadItemFile

class DownloadItemAdminOptions(admin.ModelAdmin):
    inlines         = [ DownloadItemFileInline, ]
    ...other admin options here...    

admin.site.register(DownloadItem, DownloadItem AdminOptions) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...