2010-10-14 1 views
1

Я пытаюсь загрузить файлы для модели статьи. Поскольку объект может иметь несколько изображений, я использую внешний ключ из модели файла в моей модели статьи. Тем не менее, я хочу, чтобы все файлы имели уникальные названия. Вот фрагмент кода.django: уникальное имя для объекта в пределах набора внешних ключей

class Article(models.Model): 
    name = models.CharField(max_length=64) 

class Files(models.Model): 
    title = models.CharField(max_length=64) 
    file = models.FileField(upload_to="files/%Y/%m/%d/") 
    article = models.ForeignKey(Article) 

Теперь, когда я загрузить файлы, я хочу, чтобы названия файлов должны быть уникальными в пределах «foreign_key» набор статьи, и не обязательно среди всех объектов файлов. Есть ли способ автоматически установить заголовок файлов? Предпочтительно для некоторой комбинации связанной статьи и инкрементных целых чисел! Я намерен загружать файлы только из интерфейса администратора, а файлы устанавливаются Inline в форме admin.

+0

Его трудно посоветовать, не зная, какую версию django. –

+0

Его последняя версия 1.2.3 – Neo

ответ

1
def add_file(request, article_id):    
    if request.method == 'POST': 
     form = FileForm(request.POST, request.FILES) 
     if form.is_valid(): 
      file = form.save(commit=False) 
      article = Article.objects.get(id=article_id) 
      file.article = article 
      file.save() 
      file.title = article.name + ' ' + file.id 
      file.save() 
      redirect_to = 'redirect to url' 
      return HttpResponseRedirect(redirect_to)  
+0

Хороший подход. Но я пытался установить «заголовок» файла, а не имя файла. Есть ли способ сделать название файла зависимым от имени статьи в чужой ссылке? – Neo

+0

@Neo - вам нужно быть осторожным, так как несколько файлов могут принадлежать к одной и той же статье. –

+0

Именно поэтому название должно быть основано на Article-Name + Some Integer. Я понимаю, что в Django потребуется некоторое изменение, поскольку сначала создаются объекты Inline, а затем их foreginkey устанавливается после создания основного объекта. Есть ли работа? – Neo